python--继承

【Python】继承 在Python的面向对象编程(Object-Oriented Programming, OOP)范式中,继承(Inheritance)无疑是三大核心支柱(封装、继承、多态)之一。它不仅仅是一种代码复用的机制,更是一种设计思想,一种构建层次化、模块化、可扩展软件系统的强大工具。本章将从最基础的“为什么”出发,层层深入,揭示继承在软件工程中的核心价值,并为后续的深入剖析奠定坚实的基础。在深入继承之前,我们必须对OOP的一些基本概念有清晰的认识。因为继承是建立在这些概念之上的。那么,继承在OOP中扮演什么角色呢? 阅读详情

类属性:属于类的成员,对象共有的 

修改方式 :   1. 类名.类属性=...    2.  实例对象.__class__类属性=...

class Preson:
    def __init__(self):
        self.name='无名氏'
        self.age=18
    def show(self):
        print('姓名: '+self.name+'  年龄: '+str(self.age))
if __name__=='__main__':
    #1. 类名.类属性=...
    Preson.height='178cm'
    zhangsan=Preson()
    zhangsan.name
    zhangsan.age
    zhangsan.show()
    # 2.实例对象.__class__类属性=...
    zhangsan.__class__.phone='119110120'
    print(zhangsan.__class__.phone)
    print(zhangsan.height)
    lisi=Preson()
    lisi.name='李四'
    lisi.age='20'
    lisi.show()
    print(zhangsan.__class__.phone)   #全局共有
    print(zhangsan.height)

输出结果为:

 类方法:在方法上添加 @classmethod   -->  是一个装饰器

      可以通过类方法调用类属性,也可以通过对象调用类属性

class Preson:
    @classmethod
    #类方法更倾向于  工具方法  不需要重复创建对象  不是以对象形式去调用
    def show(cls):   #括号里面的值建议  见名知意   直接填写cls
        print('这是一个类方法....')
Preson.show()     #通过类方法直接调用
Pre=Preson()
Pre.show()    #也可以通过对象方法调用
#均打印为:   这是一个类方法....
#           这是一个类方法....

静态方法:

    方法前加  @staticmethod   静态方法可以加参数,

     静态方法既和类没关系,也和对象没关系,也可以通过类和对象调用

#无参的情况下:
class Preson:
    @staticmethod
    def show():   #括号里面可以什么都不添加,  如果添加 ,下面调取时也应该添加(可以添加任意值)
        print('这是一个静态方法....')
Preson.show()     #通过类方法直接调用
Pre=Preson()
Pre.show()   #通过对象方法调用
#打印为:   这是一个静态方法....
#          这是一个静态方法....
#带参情况:
class Preson:
    @staticmethod
    def show(date):
        print(date+'  今天天气不错....')
Preson.show('具体日期')     #通过类方法直接调用
Pre=Preson()
Pre.show('5-13')   #通过对象方法调用
#打印为:  具体日期  今天天气不错....
#       5-13  今天天气不错....

 继  承  :

子类继承父类,子类可以使用父类的属性和方法,简化代码.

        当生成子类对象时,先初始化父类对象,

                所以如果父类有__init__()方法,并且有属性时,要通过子类的构造赋值

                        一个类可以有多个子类

子类继承父类时,第一种方法: super().__init__(self,属性)

class Pet:   #父类
    def __init__(self,name,love,health):
        self.name=name
        self.love=love
        self.health=health
    def show(self):
        print('宠物名: '+self.name+' 亲密度: ',self.love,'健康值: ',self.health)
class Dog(Pet):   #继承时括号里面写父类
    def __init__(self, name, love, health):
        super().__init__(name, love, health) #这里 直接输入参数即可 不需要填self
    def eat(self):
        print(self.name + '正在吃饭...')
dog=Dog('Boss',60,90)    #这里面可以赋值  写需要的参数
dog.eat()
dog.show()
#打印为   Boss正在吃饭...
#         宠物名: Boss 亲密度:  60 健康值:  90

子类继承父类时,第二种方法:  父类.__init__(self,参数)==>父类.__init__(self)-->调用无参

class Pet:
    def __init__(self,name,love,health):
        self.name=name
        self.love=love
        self.health=health
    def show(self):
        print('宠物名: '+self.name+' 亲密度: ',self.love,'健康值: ',self.health)
class Dog(Pet):   #继承时括号里面写父类
    def __init__(self, name, love, health):
        Pet.__init__(self,name, love, health) #这里需要在括号内输入self,然后再输入参数
    def eat(self):
        print(self.name + '正在吃饭...')
dog=Dog('Boss',60,90)    #这里面可以赋值  写需要的参数
dog.eat()
dog.show()
#打印为   Boss正在吃饭...
#         宠物名: Boss 亲密度:  60 健康值:  90

子类继承父类时,第三种方法: super(子类,self).__init__(参数)

class Pet:
    def __init__(self,name,love,health):
        self.name=name
        self.love=love
        self.health=health
    def show(self):
        print('宠物名: '+self.name+' 亲密度: ',self.love,'健康值: ',self.health)
class Dog(Pet):   #继承时括号里面写父类
    def __init__(self, name, love, health):
       super(Dog,self).__init__(name, love, health)
    def eat(self):
        print(self.name + '正在吃饭...')
dog=Dog('Boss',60,90)    #这里面可以赋值  写需要的参数
dog.eat()
dog.show()
#打印为   Boss正在吃饭...
#         宠物名: Boss 亲密度:  60 健康值:  90

总结:当子类继承父类时,子类的构造方法应该包含父类和子类共同的属性,在子类的初始化__init__()方法中,将父类的属性传递给父类,子类的属性赋值给子类

方法重写:子类继承父类时,子类的方法签名和父类一样,此时子类重写了父类的方法,当生成子类对象时,调用的是子类重写的方法.

继承特性之一:传递性(层层传递)

class Pet:
    def __init__(self,name,love,health):
        self.name=name
        self.love=love
        self.health=health
    def show(self):
        print('宠物名: '+self.name+' 亲密度: ',self.love,'健康值: ',self.health)
class Dog(Pet):   #继承时括号里面写父类
    def __init__(self, name, love, health):
       super(Dog,self).__init__(name, love, health)
    def eat(self):
        print(self.name + '正在吃饭...')
class Pig(Dog):
    def __init__(self, name, love, health):
        super(Pig, self).__init__(name, love, health)
    def showPig(self):
        print('我的名字: '+self.name+'亲密度关系: ',self.love,'健康程度: ',self.health)
pig=Pig('Pig 猪',100,20)
pig.showPig()
#  打印为:  我的名字: Pig 猪亲密度关系:  100 健康程度:  20 

继承特性之一:多继承

类同时继承多个父类,class C(A,B),

当有AB均有相同方法 ,而子类又重写时,调用子类

如果子类没有重写方法 , 优先继承左侧的类

class Pet:
    def __init__(self,name,love,health):
        self.name=name
        self.love=love
        self.health=health
    def show(self):
        print('宠物名: '+self.name+' 亲密度: ',self.love,'健康值: ',self.health)
class Dog(Pet):   
    def __init__(self, name, love, health):
       super(Dog,self).__init__(name, love, health)
    def show(self):
        print(self.name + '正在吃饭...')
class animal:
    def show(self):
        print('我属于动物...')
class Pig(Dog,animal):
    def __init__(self, name, love, health):
        super(Pig, self).__init__(name, love, health)
   # def show(self):
    #    print('我的名字: '+self.name+'亲密度关系: ',self.love,'健康程度: ',self.health)
pig=Pig('Pig 猪',100,20)
pig.show()
#当本身有调用对象则调用本身     如果没有则调用左侧的
#  本身有时打印为:  我的名字: Pig 猪亲密度关系:  100 健康程度:  20
#本身没有时打印为:  Pig 猪正在吃饭...  优先调用左侧的

类名.mro(),可以看到所有父类,即搜索顺序

class Pet:
    def __init__(self,name,love,health):
        self.name=name
        self.love=love
        self.health=health
    def show(self):
        print('宠物名: '+self.name+' 亲密度: ',self.love,'健康值: ',self.health)
class Dog(Pet):   
    def __init__(self, name, love, health):
       super(Dog,self).__init__(name, love, health)
    def show(self):
        print(self.name + '正在吃饭...')
class animal:
    def show(self):
        print('我属于动物...')
class Pig(Dog,animal):
    def __init__(self, name, love, health):
        super(Pig, self).__init__(name, love, health)
    def show(self):
        print('我的名字: '+self.name+'亲密度关系: ',self.love,'健康程度: ',self.health)
pig=Pig('Pig 猪',100,20)
print(Pig.mro())
#打印为:[<class '__main__.Pig'>, <class '__main__.Dog'>, <class '__main__.Pet'>, <class '__main__.animal'>, <class 'object'>]

鸭子类型:

        这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子.

单类模式:

      该模式的主要目的是确保某一个类只有一个实例存在。

   可以用id()看地址      当有属性时,需要在__new__()中也添加属性

#单例模式 :  实例==>对象==>内存地址==>同一块空间
#  资源共享的时候使用
class Myclass:
    __school=None
    def __new__(cls):
        if cls.__school==None:   #没有创建过
            cls.__school=object.__new__(cls)
            return cls.__school
        else: #被创建过
            return cls.__school
stu=Myclass()
stus=Myclass()
print(id(stu))
print(id(stus))
#打印为:  85660048
 #        85660048


















Python入门实战:Python的继承与多态 1.背景介绍 Python是一种强大的编程语言,它的设计哲学是“简单且明确”。Python的继承和多态是其强大功能之一,它们使得编程更加简洁和易于理解。本文将详细介绍Python的继承与多态的核心概念、算法原理、具体操作步骤以及数学模型公式。 1.1 Python的继承与多态的背景 阅读详情

相关推荐

快速理解OSI七层模型(举例理解,数据传输过程,深入理解OSI七层模型)

我们需要了解互联网的本质是一系列的网络协议,这个协议就叫做OSI协议(开放系统互联(Open System Interconnection)),它是由ISO(国际标准化组织)定义的。 需要注意,随着时代的发展,OSI已经被TCP/IP 4层模型淘汰,在当今世界上并没有大规模的使用。 那么对于OSI,人们按照功能不同,分工不同,人为的将OSI的分为七层。实际上这七层是并不存在的,也就是说没有这些概念,而我们今天提到的七层概念,只是人为的划分而已。目的只是为了让大家更好地理解这些都是用来做什么的。

CN_TangZheng的博客 3万+

python面向对象的三大特性:封装,继承,多态

我们接下来来聊聊Python代码中的“继承”:类是用来描述现实世界中同一组事务的共有特性的抽象模型,但是类也有上下级和范围之分,比如:生物 => 动物 => 哺乳动物 => 灵长型动物 => 人类 => 黄种人从哲学上说,就是共性与个性之间的关系,比如:白马和马!所以,我们在OOP代码中,也一样要体现出类与类之间的共性与个性关系,这里就需要通过类的继承来体现。简单来说,如果一个类A使用了另一个类B的成员(属性和方法),我们就可以说A类继承了B类,同时这也体现了OOP中==代码重用的特性==!

qq_55451220的博客 2824

别再纠结了!实测罗技Flow、对拷线、微软Mouse without Borders,我的最终选择是...

本文通过实测对比罗技Flow、对拷线和微软Mouse without Borders等多设备控制方案,详细分析了各自的优缺点及适用场景。作者最终选择了对拷线与罗技键鼠的组合方案,为专业用户提供了稳定可靠的多设备协同办公解决方案,特别适合需要频繁传输大文件和跨设备操作的用户。

weixin_33696106的博客 408

Python面向对象的三大特性(继承和多态)

继承、继承的基本语法、单继承、多继承、super()方法、MRO属性或方法、多态、多态的好处、类属性、类方法、静态方法

Dylan__D的博客 1209

做形态学方法的团队_“设计形态学”与“第三自然”

文/邱松(清华大学 美术学院)摘要:“设计形态学”是基于“形态学”研究的设计基础学科。“形态”既是该学科研究的主体,又是与其它学科相连接的“纽带”。实际上,不管是供养我们的地球家园,还是神秘莫测的浩瀚宇宙,均由数量纷繁、千姿百态的“形态”构筑而成。形态通常被分成两大类:一类是源于“第一自然”的“自然形态”;另一类是来自“第二自然”的“人造形态”。而这两类形态正是“设计形态学”研究的两条...

weixin_31548723的博客 2683

深入解读WT软件湍流强度计算与分析

深入解读WT软件湍流强度计算与分析

weixin_46713695的博客 1026

python 面向对象之继承

python 面向对象之继承:继承的概念、单继承、多继承、多层继承、子类中访问父类属性和方法(super())、私有权限

不能再留遗憾了的博客 2986

LeRobot 入门教程(十三)集成自定义的机器人、相机等硬件

本文详细介绍了如何将自定义机器人集成到LeRobot生态系统的完整流程。主要内容包括:1)硬件准备与通信接口选择;2)继承Robot基类实现标准接口;3)定义观察特征和动作特征;4)处理设备连接/断开逻辑;5)支持校准与配置;6)实现核心传感器读取和动作发送功能;7)可选遥操作器集成;8)遵循4项规范打包自定义设备(命名前缀、类名对应、文件结构、模块暴露);9)提供了完整实现示例。通过该方案,开发者可让自定义机器人兼容LeRobot的数据采集、控制管道和策略训练等全套工具链。

2506_90492529的博客 1902

python3 类的继承

1.继承的定义 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类。 2.单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass

python学习者的博客 698

【unity实战】Unity手搓脚本工具实现合并网格功能

本文介绍了在Unity中优化网格性能的方法,通过合并重复网格减少绘制调用。主要使用Mesh.CombineMeshes方法实现网格合并,支持统一材质和多材质处理。核心内容包括:1)基础合并脚本实现,将子网格合并到父对象并禁用原网格;2)统一材质设置,支持自定义或默认材质;3)多材质合并方案,通过设置mergeSubMeshes=false保留子网格材质索引。文章还提供了完整代码示例和操作演示,适用于实际项目中的网格优化需求。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 560

QGis二次开发 —— 1、win10/win11搭建Vs2017-QGis3.40.12环境(附Vs2017环境效果,附全部问题解决方法)(附:Qt助手加入QGis接口说明文档)

QGis二次开发 —— 1、Windows10搭建Vs2017-QGis环境(附Vs2017环境效果)(附:Qt助手加入QGisA接口说明文档)

1362

Python中类的继承

1. 单继承 继承的主要作用是实现代码的重用。继承使得子类拥有父类的方法和属性。 直接来看一个例子吧。 class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink() 从上面的代码可以看出,在编写dog类的时候,我们并没有

hello_JeremyWang的博客 3万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Python中类的继承、多层继承和多继承

Python中类的继承、多层继承和多继承 Python中,一个类可以通过继承的方式来获得父类中的非私有属性和非私有方法。 一、继承、重写、和调用重写的父类方法 继承的语法为在类名后的小括号()中写入要继承的父类名,如果要继承多个类则中间用逗号分隔。 class Electrical(object): def __init__(self, name): self....

weixin_43790276的博客 7076

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python3--继承,多继承

一.继承(一)编写类时,并非总是要从空白开始。如果你要编写的类时另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获取另一个类的所有属性和方法;原有的类称为父类(基类),而新类称为子类(派生类)。子类继承了父类的所有属性和方法,同时还可以定义自己的属性和方法。继承的意义:重用代码,方便代码的管理和修改#类定义 class people: #定义基本属性 name =...

小菜鸟的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python继承

继承 1.什么是继承 继承就是让类和类之间产生父子关系,子类可以拥有父类的静态属性和方法。继承就是可以获取另外一个类的静态属性或者普通方法,(并非所有成员)。 在Python中,新建的类可以继承一个或者多个父类,父类又可以称为基类或者超类,新建的类称为派生类或子类。 注意:python的继承分为:单继承和多继承 2.继承中子类和父类的概念 父类:用于被继承的类,称之为父类,又叫做基类或者超类。 子...

qq_44700820的博客 5859

Python——类的继承

1.继承的实现 Python中继承语法格式如下: class 子类名(父类名): 类的属性 类的方法 例 7-11 类的继承示例,子类继承父类方法: #ex0711.py 类的继承示例,子类继承父类方法 class Animal: num = 0 def __init__(self): print("父类 Animal") def show(self): print("父类 Animal 成员方法") class Cat(Animal):

XQC_KKK的博客 2万+

python继承的好处_Python的继承

何为继承在现实生活中,继承,意味着一个人从另外一个人那里得到了某些东西,比如优秀的品质或者万贯的家财。在编程中,继承相对来说是有明确规定和预期结果的。类别A继承制类别B,那么A称之为子类,B称之为父类或者超类。继承使得子类拥有父类的非私有方法和属性,子类中可以不用写重复的代码。而子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类原有的属性很方法,使其获得与父类不同的功能。子类可以...

weixin_39829574的博客 1122

Python Class 类的继承与多继承

Python Class 类的继承与多继承1、继承概念2、继承中的访问控制3、示例3.1 示例 13.2 示例 23.3 示例 33.4 示例 43.5 示例 53.6 示例 63.7 示例 73.8 示例 83.9 示例 94、多继承4.1 概念介绍4.2 多继承语法4.3 类装饰器4.4 `Mixin` 类4.5 `Mixin` 示例 1、继承概念 面向对象的三要素之一:继承 inheritance 在面向对象的世界中,从父类继承,就可以直接拥有父类的属性和方法,这样可以减少代码、多复用。子类可

weixin_44983653的博客 4192

python多继承

如果多个父类中有同名的方法,Python 将按照一定的顺序来决定哪个方法会被调用,这个顺序由 MRO(Method Resolution Order)来决定,Python 使用 C3 算法来计算多继承中的 MRO。MRO 算法的原则是尽可能地保持继承顺序不变,即先继承的类先被搜索,同级别的父类按照它们在类定义中出现的顺序被搜索。2.明确调用父类的方法。钻石继承指的是在一个继承关系中,某个类同时继承了两个或更多个父类,而这些父类又有一个共同的祖先类,因此在继承关系图中形成了一个钻石形状。

liulanba的博客 1万+

python中的继承冲突及继承顺序

本文介绍了python多继承中的继承冲突及python中解决继承顺序的Mro C3算法。

m0_56745306的博客 1777

python继承怎么写_python 继承

一、简介1、作用简化代码2、分类一个父类可以被多个多个子类继承一个子类可以继承多个父类---python独有3、新式类和经典类python3中,只含义新式类,新式类默认继承Objectpython2.7中含义经典类和新式类,新式类需要继承Object4、方法类名.__base__查看该类的继承顺序类.mro(),返回类的调用顺序classA:print('A')classB(A):print('B...

weixin_42516710的博客 1640

Python-继承

python继承 单继承,多继承

aaaccc444的博客 5925

python中类的继承

类的继承是面向对象编程中的重要概念,它允许一个类(子类)获取另一个类(父类)的属性和方法。通过继承,子类可以重用父类的代码,并且可以在此基础上添加自己的特定属性和方法,从而实现代码的复用和扩展。在类的继承中,父类通常包含一些通用的属性和方法,而子类可以继承这些通用的特性。子类可以通过继承获得父类的属性和方法,并且可以根据需要进行修改或扩展。这种机制使得代码更具有灵活性和可维护性。通过类的继承,我们可以建立类之间的层次关系,形成类的继承链。

2301_77444219的博客 5418

python继承方案_Python 继承

Python 继承一、继承概念面向对象中的继承和现实生活中的继承是一个意思。如:子承父业被继承的类称为:"基类"、"父类"或者"超类"继承方式1.实现继承实现继承是指使用基类的属性和方法而无需额外编码的能力2.接口继承接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构爹类方法)在继承中子类可以继承多个基类,但一般都是一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实...

weixin_39689297的博客 254

什么是python继承_python之继承

继承什么是继承继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为原始类,新建的类称为新类或子类首先先创建一个父类classParentClass1: #定义父类passclassParentClass2: #定义父类passclassSubClass1(ParentClass1): #单继承,父类是ParentClass1,子类是SubClasspasscla...

weixin_39616287的博客 430
上一篇: python--类和对象
下一篇: python:一日总结
Hao_python
博客等级 码龄9年 5粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值