Python--面向对象--类的继承

Python——面向对象 类的定义、对象、方法以及继承与多继承 Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。 接下来我们先来简单的了解下面向对象的一些基本特征。 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合 阅读详情

基本概念

面向对象三要素之一,继承Inheritance
在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法,这样可以减少代码、多复用。子类可以定义自己的属性和方法

定义

格式如下

class 子类名(基类1[,基类2,...]):
	语句块

如果类定义时,没有基类列表,等同于继承自object。在Python3中,object类是所有对象的根基类

class A:
	pass
# 等价于
class A(object):
	pass

注意,上例在Python2中,两种写法是不同的
Python支持多继承,继承也可以多级

  • 继承
    class Son(Father) 这种形式就是父类继承,括号中写上继承的类的列表
    继承可以让子类从父类获取特征(属性和方法)
  • 父类
    Father就是Son的父类,也称为基类、超类
  • 子类
    Son就是Father的子类,也称为派生类

单一继承(括号类写一个)

class Animal:
    def shout(self):
        print('Animal shouts')

class Cat(Animal):
    pass

a = Animal()
a.shout() # Animal shouts
c = Cat()
c.shout() # Animal shouts

取当前实例类型的名称

class Animal:
    def shout(self):
        print('{} shouts'.format(type(self).__name__))

class Cat(Animal):
    pass

a = Animal()
a.shout() # Animal shouts
c = Cat()
c.shout() # Cat shouts

继承的特殊属性和方法

在这里插入图片描述

class Animal:
    def shout(self):
        print('{} shouts'.format(type(self).__name__))

class Cat(Animal):
    pass

class Dog(Animal):
    pass

print(Cat.__base__) # 类的基类 
print(Dog.__bases__) # 类的基类元祖 
print(Animal.__bases__)  # 类的基类元祖 

# mro:方法解析顺序,可看清楚继承路线
print(Cat.mro() # 显示方法查找顺序,基类的列表
print(Cat.__mro__) #显示方法查找顺序,基类的元组

print(Animal.__subclasses__()) # 类的子类列表

# 打印结果
<class '__main__.Animal'>
(<class '__main__.Animal'>,)
(<class 'object'>,)
[<class '__main__.Cat'>, <class '__main__.Animal'>, <class 'object'>]
(<class '__main__.Cat'>, <class '__main__.Animal'>, <class 'object'>)
[<class '__main__.Cat'>, <class '__main__.Dog'>]
  • int的子类
print(int.__subclasses__()) # [<class 'bool'>]

继承中的访问控制

class Animal:
   __COUNT = 100
   HEIGHT = 0

   def __init__(self,age, weight, height):
       self.__COUNT += 1
       self.age = age
       self.__weight = weight
       self.HGIGHT = height

   def eat(self):
        print('{} eat'.format(self.__class__.__name__))

   def __getweight(self):
        print(self.__weight)

   @classmethod
   def showcount1(cls):
        print(cls)
        print(cls.__dict__)
        print(cls.__COUNT)

   @classmethod
   def __showcount2(cls):
        print(cls.__COUNT)

   def showcount3(self):
        print(self.__COUNT)

class Cat(Animal):
    NAME = 'CAT'
    __COUNT = 200

# c = Cat() # __init__ 函数参数错误
c = Cat(3, 5, 15)
c.eat() # Cat eat
print(c.HEIGHT) #  0

# print(c.__COUNT)
# AttributeError, 可通过c._Animal__COUNT访问 # 101

# c.__getweight()
# AttributeError, 可通过c._Animal__getweight()访问 # 5

c.showcount1()
# 打印结果
# <class '__main__.Cat'>
# {'__module__': '__main__', 'NAME': 'CAT', '_Cat__COUNT': 200, '__doc__': None}
# 100

# c.__showcount2
# AttributeError # 可通过c._Animal__showcount2访问

c.showcount3() # 101
print(c.NAME) # CAT

print("{}".format(Animal.__dict__))

print("{}".format(Cat.__dict__))
# {'__module__': '__main__', 'NAME': 'CAT', '_Cat__COUNT': 200, '__doc__': None}
print(c.__dict__) 
# {'_Animal__COUNT': 101, 'age': 3, '_Animal__weight': 5, 'HGIGHT': 15}

print(c.__class__.mro()) 
# [<class '__main__.Cat'>, <class '__main__.Animal'>, <class 'object'>]

方法的重写、覆盖override

class Animal:
    def shout(self):
        print('Animal shouts')

class Cat(Animal):
    # 覆盖了父类方法
    def shout(self):
        print('miao')

a = Animal()
a.shout()
c = Cat() # Animal shouts
c.shout() # miao

print(a.__dict__)
print(c.__dict__)
print(Animal.__dict__)
print(Cat.__dict__)
  • Cat中能够有覆盖自己的方法?
class Animal:
    def shout(self):
        print('Animal shouts')

class Cat(Animal):
    # 覆盖了父类的方法
    def shout(self):
        print('miao')
        
    # 覆盖了自身的方法,显示调用了父类的方法
    def shout(self):
        print(super()) # <super: <class 'Cat'>, <Cat object>>
        print(super(Cat, self)) # <super: <class 'Cat'>, <Cat object>>
        print(super(self.__class__, self)) # <super: <class 'Cat'>, <Cat object>>

        super().shout() # Animal shouts
        super(Cat, self).shout() # 等价于super() # Animal shouts
        self.__class__.__base__.shout(self) # 不推荐 # Animal shouts


a = Animal()
a.shout() # Animal shouts
c = Cat() 
c.shout() # miao

print(a.__dict__)
print(c.__dict__)
print(Animal.__dict__)
print(Cat.__dict__)

super()

  • 可以访问到父类的类属性

类方法和静态方法

class Animal:
    @classmethod
    def class_method(cls):
        print('class_method_animal')

    @staticmethod
    def static_method():
        print('static_method_animal')

class Cat(Animal):
    @classmethod
    def class_method(cls):
        print('class_method_cat')

    @staticmethod
    def static_method():
        print('static_method_cat')

c = Cat()
c.class_method() # class_method_cat
c.static_method() # static_method_cat

print(Cat.__dict__)
print(Animal.__dict__)

Cat.static_method() # static_method_cat
Animal.static_method() # static_method_animal

这些方法都可以覆盖,原理都一样,属性字典的搜索顺序

继承时使用初始化

  • 初始化只跟实例字典相关
class A:
    def __init__(self,a, d=10):
        self.a = a
        self.d = d

class B(A):
    def __init__(self, b, c):
        A.__init__(self, b + c, b - c)
        self.b = b
        self.c = c

    def printv(self):
        print(self.b) # 200
        print(self.a) # 500

f = B(200, 300)
print(f.__dict__) # {'a': 500, 'd': -100, 'b': 200, 'c': 300}
print(f.__class__.__bases__) # (<class '__main__.A'>,)
f.printv()
  • 如果父类定义了__init__方法,应该在子类的__init__中调用它
  • 那么,子类什么时候自动调用父类的__init__方法呢?

示例1

class A:
    def __init__(self):
        self.a1 = 'a1'
        self.a2 = 'a2'
        print('init in A')

class B(A):
   pass

b = B() # init in A
print(b.__dict__) # {'a1': 'a1', 'a2': 'a2'}

B实例的初始化会自动调用基类A的__init__方法,所以print('init in A')会打印出来

示例2

class A:
    def __init__(self):
        self.a1 = 'a1'
        self.a2 = 'a2'
        print('init in A')

class B(A):
   def __init__(self):
       self.b1 = 'b1'
       print('init in B')

b = B() # init in B
print(b.__dict__) # {'b1': 'b1'}

B实例一旦定义了初始化__init__方法,就不会自动调用父类的初始化__init__方法,需要手动调用

class A:
    def __init__(self):
        self.a1 = 'a1'
        self.a2 = 'a2'
        print('init in A')

class B(A):
   def __init__(self):
       self.b1 = 'b1'
       print('init in B')
       A.__init__(self)

b = B() # init in B

print(b.__dict__) # 注意看__a2
# init in A
# {'b1': 'b1', 'a1': 'a1', '_A__a2': 'a2'}

正确初始化

class Animal:
    def __init__(self, age):
        print('init in Animal')
        self.age = age

    def show(self):
        print(self.age)

class Cat(Animal):
    def __init__(self, age, weight):
        # 调用父类的__init__方法的顺序有时决定着show方法的结果
        super().__init__(age)
        print('init in Cat')
        self.age = age + 1
        self.weight = weight
        super().__init__(age)

c = Cat(10, 5)
# 打印结果
# init in Animal
# init in Cat
# init in Animal
c.show() #10
  • 注意,调用父类的__init__方法,出现在不同的位置,可能导致出现不同的结果
  • 将上例中所有的实例属性改成私有变量
class Animal:
    def __init__(self, age):
        print('init in Animal')
        self.__age = age

    def show(self):
        print(self.__age)

class Cat(Animal):
    def __init__(self, age, weight):
        # 调用父类的__init__方法的顺序有时决定着show方法的结果
        super().__init__(age)
        print('init in Cat')
        self.__age = age + 1
        self.__weight = weight
        super().__init__(age)

c = Cat(10, 5)
# 打印结果
# init in Animal
# init in Cat
# init in Animal
c.show() # 10

print(c.__dict__) # {'_Animal__age': 10, '_Cat__age': 11, '_Cat__weight': 5}
  • 上例中打印10,原因看__dict__就知道了。因为父类Animal的show方法中_age会被解释为_Animal__age,因此显示的是10,而不是11
  • 这样的设计不好,Cat的实例c应该显示自己的属性值更好

解决的办法:

  • 一个原则,自己的私有属性,就该自己的方法读取和修改,不要借助其他类的方法,即使是父类或者派生类的方法
【Python】面向对象:类,继承、初始化、调用函数、方法 面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计模型,它将对象作为程序的基本单元,以提高软件的可重用性、灵活性和扩展性。Python是一种支持面向对象编程的语言。 在Python中,面向对象编程主要涉及以下几个核心概念: 类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism) 阅读详情

相关推荐

Python面向对象编程:类、继承与多态性

本章介绍了Python中的类、继承以及多态性的概念。通过定义Person类及其子类MIT_person,解释了如何在Python中使用__init__方法初始化实例,以及如何通过继承来扩展和定制类的行为。还探讨了重载运算符、方法覆盖以及如何利用继承层次来区分不同类型的对象。通过具体代码示例,展示了如何使用类方法和属性,以及如何通过继承实现代码复用和创建更为复杂的对象类型。

weixin_28746213的博客 757

C++ (四)

继承 语法: class 类:继承方式 基类,...{ }; 继承方式: public :公开继承 protected :保护继承 private :私有继承 默认 继承方式决定了基类中的属性继承到子类中的访问控制属性 子类拥有父类所有的属性和方法 1.子类的构造函数 缺省的构造函数会默认调用父类的无参构造函数 构造函数的执行顺序: (1)按照继承顺序依次调用基类的构造函数 默认调用无参构造 (2)按照成员的声明顺序 依次调用 类类型成员的构造函数 默认调用无参构造 (3)执行构

m0_49203544的博客 602

SpringBoot与Flowable整合:构建高效审批工作流的实战指南

本文是一份SpringBoot与Flowable整合构建高效审批工作流的实战指南。通过一个经典的二级审批场景,详细介绍了从项目搭建、BPMN流程设计、核心服务编写到RESTful API构建的完整步骤。文章深入探讨了如何利用Flowable工作流引擎实现审批流程的自动化驱动与灵活管理,并分享了变量管理、监听器、异步执行等进阶技巧与常见避坑指南,帮助开发者快速构建健壮、可维护的企业级审批系统。

qsc9012345的博客 519

二十一、面向对象3—继承:重写、调用父类的两种方法、super()、isinstance(obj, Class) 、多继承、私有的属性和方法的调用

一、继承的示例: 二、子类继承父类、父类的父类 三、在子类中重写父类的方法 在子类中再写一个父类有的方法,就会先使用自身类的方法,如果自身没有该方法,则会使用父类的方法。 调用的顺序:会先使用自身类的方法,如果自身没有该方法,则会使用父类的方法。 四、在子类中调用被重写的父类的方法(两种方法) (1)第一种方法:   类名.方法名(self)             【...

xk1761299425的博客 1009

极化码理论及算法研究6-SCL、CA-SCL及matlab仿真

极化码译码算法5——SCL/CA-SCL译码算法系列目录1、引言2、串行抵消列表(SCL)译码算法2.1、路径度量PM 系列目录 (如要找其他内容,欢迎访问我的主页寻找) #前言 #极化码概述 #极化码定义 #极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 1、引言 在上一节中,介绍了经典的SC译码算法的理论原理以及其matlab仿真代码,SC译码算法具有较低的译码复杂度,但是由于每个译码的比特信息都依赖于前面所有的比特信息的译码结果,得

1万+

YOLOv11改进 | 注意力篇 | YOLOv11引入24年最新的ELA注意力机制,并构建C2PSA_ELA

为了解决这些限制,本文介绍了一种高效的本地注意力(ELA)方法,实现了一个简单的结构,大幅度的性能改善。我们精心设计了ELA中的三个超参数,产生了四个不同的版本:ELA-T,ELAB,ELA-S和ELA-L,以满足不同视觉任务的具体要求,如图像分类,目标检测和语义分割。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 1284

继承和多态

继承和多态概述继承隐藏基类方法virtual方法与重写父类方法多态和重载密封类面向对象的编程访问修饰符 概述 继承是指一个对象(淡水鱼)直接使用另一对象(鱼)的属性和方法。像这个图,其中的带鱼继承了咸水鱼,那么咸水鱼具有的特征,带鱼都会有的,但是带鱼具有的特征,咸水鱼不一定有。 继承 父类(鱼),也称为基类: 2.子类(淡水鱼),也称为派生类: 使用冒号实现继承关系,冒号后面的是基类,前面的是子类,并且在C#中一个类只能继承一个基类。基类可以被多个子类继承。 使用继承可以提高代码的复用率。 使用

BigCherryss的博客 233

YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

YOLO 系统尊嘟太卷了吧,YOLOv11 还没完明白,YOLOv12 就重磅来袭,YOLOv12 是由纽约州立大学联合中科院在 2025年2月19 日发布,从 YOLOv12 论文题目我们大概就知道做了那些更新 ,下图是YOLOv12 在 COCO 数据集上的性能表现引入区域注意力机制(area-attention):通过引入十字形窗口自我注意机制,沿水平和垂直条纹计算注意力机制,纵横交错的注意机制。如下图所示,区域注意力采用最多简单的等分方法,将特征地图垂直或水平划分为 L 个区域。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6万+

C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性

这节讲C#中的类,方法,属性。这是面向对象编程中,我们最直接打交道的三个结构。类:类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字声明一个类:classMyClass{}类既然是一个抽象,我们使用的时候就要对其进行实例化,通过new关键字实例化一个类。MyClassmyclass=newMyC...

weixin_39935388的博客 491

纳米尺度仿真软件:Quantum Espresso_(13).非线性光学性质计算

通过 Quantum Espresso,可以高效地计算材料的非线性光学性质,包括二阶和三阶非线性极化率。这些性质在许多现代技术中具有重要的应用价值。在准备输入文件时,需要详细描述系统的晶格结构和原子位置,选择合适的基组和赝势,并设置计算参数和微扰设置。通过优化计算参数和使用并行计算,可以提高计算效率和精度。最后,使用适当的工具进行结果分析和可视化,可以更好地理解材料的非线性光学行为。

kkchenjj的博客 1277

零基础做完YOLOv8船只检测系统:HRSC2016数据集 + 完整UI,稳过答辩

亲爱的同学,通过这篇教程,你已经掌握了“基于YOLOv8的HRSC2016微小船只检测系统”从数据集处理、模型训练到Tkinter界面开发的全流程。这个课题既贴合“海事智能化”的产业战略,又涵盖了“目标检测、深度学习、界面开发”等多个毕设评分点,非常适合作为计算机或海事工程专业的毕业设计。在实践中,你可能会遇到“海面背景复杂导致船只漏检”“微小船只识别精度不足”“UI与模型推理同步卡顿”等挑战——别担心,这些都是技术成长的必经之路。

FJN110的博客 108

【笔记】python中的继承:子类的方法 _init_()、给子类定义属性和方法、重写父类的方法、将实例用作属性

文章目录一、继承1.子类的方法 _init_()2.给子类定义属性和方法3.重写父类的方法4.将实例用作属性5.模拟实物 一、继承 1.子类的方法 init() 2.给子类定义属性和方法 3.重写父类的方法 4.将实例用作属性 5.模拟实物 ...

qq_51843109的博客 3662

【STM32+K210项目】基于K210智能人脸识别+车牌识别系统(完整工程资料源码)

随着时代的进步和科技的迅猛发展,人们对居住安全的重视程度不断提升,对安全防范系统的需求也日益增强。在安防系统中,门禁系统占据着重要的位置。传统的门禁控制方式主要依靠钥匙、密码和门禁卡等,这些方式易于被破解和复制,安全性较低。然而,近年来,生物识别技术的迅速发展和成熟,为解决这一问题提供了新的方案。生物识别技术具备便携性、非易失性、不易遗忘以及难以盗用等优点,逐渐被引入到门禁系统中。传统的小区门禁系统往往依赖人工管理,存在一定的局限性,难以满足用户多样化的需求,也浪费了人力资源。

嵌入式技术开发 1万+

python继承类有参数_python面向对象——类的继承

转自:https://blog.youkuaiyun.com/yilulvxing/article/details/85374142子类:Son类父类:Father类以下案例均表示Son类继承父类的一些属性和初始化参数构造等。5个模块:(1):直接调用父类属性方法;(2):重写父类属性方法;(3):强制调用父类私有属性方法;(4):调用父类的__init__方法(5):继承父类初始化过程中的参数(1)调用父类...

weixin_35968240的博客 979

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

[python] 面向对象的三大特性-继承及新式类

继承是面向对象编程中的一个核心概念,允许子类继承父类的属性和方法,从而避免代码重复并提高复用性。继承可以分为单继承和多继承,子类可以通过重写父类的方法来扩展或修改功能。多层继承则形成类的层次结构,子类可以继承多个层级的属性和方法。方法重写允许子类根据需要自定义父类方法的行为,而新式类在Python 3中默认继承自object类,提供更多内置功能。多继承允许一个类同时继承多个父类,但需注意方法冲突和初始化顺序。通过继承,类之间可以建立层次关系,实现代码的高效复用和扩展。

qq_45280097的博客 963

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python 之面向对象和类的继承

我们知道python是面向对象的编程 C语言是面向过程的编程 那这两个有什么区别呀先讲简单的面向过程 比如说和女孩子交往 就是我注重和你在一起的过程 我们带你做一些事情如逛街 看电影等这一套子直接下来 但是因为我还不是很了解你所以每次和你出来我都是一条龙的这一套子 这个过程有很多冗余的内容但是面向对象 就是我先了解你的爱好(属性) 再和你一起去逛街 看电影 而不是我直接带你出来做上边这一套事情 面向对象就是指定一个计划书再去做一些事情。

2301_81155391的博客 603

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python - 类和对象:面向对象、继承、组合

用造物主的视角去编写程序。

susie0815的博客 968

python类不支持多继承对吗_面向对象: 理解python类的单继承与多继承

俗话说"龙生龙凤生凤老鼠的孩子会打洞",每种动物都有各自的特性,比如老鼠会打洞猫会爬树鲨鱼会游泳不同种类有不同的天性。而在程序员的思维中,动物是对象, 天性是这个类方法或者属性。再延伸一下,比如Python是面向对象编程语言。有List、Str、Dict、Tuple等数据类型,这些数据类型也是对象,比如List类可以有count方法,我们可以通过count方法统计列表中各个元素的数量。我们可以简...

weixin_32736961的博客 698

Python面向对象类编写细节分析【类,方法,继承,超类,接口等】

这篇文章主要介绍了Python面向对象类编写细节,较为详细的分析了Python面向对象程序设计中类,方法,继承,超类,接口等相关概念、使用技巧与注意事项,需要的朋友可以参考下 本文实例讲述了Python面向对象类编写技术细节。分享给大家供大家参考,具体如下: 类代码编写细节 继续学习类、方法和继承。 class语句 以下是class语句的一般形式: class <name>(super...

python多线程基础教程进阶教程 814

Python面向对象类的继承实例详解

本文实例讲述了Python面向对象类的继承。分享给大家供大家参考,具体如下: 一、概述 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。在某些 OOP 语言中,一...

python基础编程开发教程 980

python面向对象———类,继承

python面向对象——类的定义class Fridge() : def open(self) : print('打开冰箱门') def pack(self , goods) : self . goods = goods print('把%s装进冰箱' % self . goods) def close(self) : print('关门')类的使用属性类的属性存储了类的各种数据,定义位置有类的内部和方法的外部,由该类所有的对象共同拥有。类属性可以通过类名访问,也可以通过对象名访问,但只能通过类名修改。

coising的博客 683

python 类继承list_面向对象: 理解python类的单继承与多继承

俗话说"龙生龙凤生凤老鼠的孩子会打洞",每种动物都有各自的特性,比如老鼠会打洞猫会爬树鲨鱼会游泳不同种类有不同的天性。而在程序员的思维中,动物是对象, 天性是这个类方法或者属性。再延伸一下,比如Python是面向对象编程语言。有List、Str、Dict、Tuple等数据类型,这些数据类型也是对象,比如List类可以有count方法,我们可以通过count方法统计列表中各个元素的数量。我们可以简单...

weixin_39630140的博客 122

python面向对象强化(类与继承)

类是对象的蓝图或模板,它定义了对象的属性(数据)和行为(方法)。类在 Python 中通过。

2401_82416248的博客 393

python面向对象类型_Python 面向对象(类,类的继承)

Python 面向对象记住一句话:类是模板,而实例则是根据类创建的对象。初学时对类的理解是从类的字面上,可以片面的认为它是一个种类,它是相似特征的抽像,也就是相似的东西,可以把相似特征的事务抽象成一个类。(事务可以是具体的物体或行为)以圆为例,圆是具有圆周率(pi)和半径(r)两个相似特征的属性。根据相似特征抽象出圆类,每个圆的半径可以不同,那么半径可以作为圆的实例属性;而每个圆的圆周率pi是相同...

weixin_39549899的博客 256

Python面向对象入门:类、继承与多态

Python面向对象编程核心概念摘要 Python面向对象编程(OOP)通过类(Class)组织代码,实现封装、继承和多态三大特性。类作为对象模板,包含属性(变量)和方法(函数),使用__init__初始化对象。特殊方法(魔术方法)如__str__、__eq__可定制对象行为,属性装饰器@property实现属性访问控制。继承(Inheritance)允许子类复用父类功能,通过super()调用父类方法,并可重写(Override)父类方法实现多态性。示例展示了从Person基础类到BankAccount、

qq_40997679的博客 494
上一篇: Python -- 面向对象概述
下一篇: Python--递归函数
鹿夏
博客等级 码龄8年 24粉丝 105原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值