python super()继承和多继承

class A:
    def __init__(self):
        self.n = 2

    def add(self, m):
        print('self is {} @A.add'.format(self))
        self.n += m

class B(A):
    def __init__(self):
        self.n = 3

    def add(self, m):
        print('self is {} @B.add'.format(self))
        super().add(m)
        self.n += 3

class C(A):
    def __init__(self):
        self.n = 4

    def add(self, m):
        print('self is {} @C.add'.format(self))
        super().add(m)
        self.n += 4

class D(B, C):
    def __init__(self):
        self.n = 5

    def add(self, m):
        print('self is {} @D.add'.format(self))
        super().add(m)
        self.n += 5
d = D()
d.add(2)        #虽然使用的时父类的add(),但是self一直是代表D类的self.
print(d.n)

多继承的顺序是先从左到右,再从下到上。
# d.n=5+3+4+2+5=19
输出结果:
# self is <__main__.D object at 0x10d99e4e0> @D.add
# self is <__main__.D object at 0x10d99e4e0> @B.add
# self is <__main__.D object at 0x10d99e4e0> @C.add
# self is <__main__.D object at 0x10d99e4e0> @A.add
19

原文地址:https://www.cnblogs.com/plusUltra/p/10622541.html

时间: 2024-09-15 13:14:51

python super()继承和多继承的相关文章

关于Python中的类普通继承与super函数继承

关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接:http://blog.csdn.net/lqhbupt/article/details/19631991

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: ? ? ? ? ? ?将一些东西封装到一个地方,你还可以取出来 ? ? ? ? ? ?类设置静态属性, 设置一些方法 或者 对象, 对象可以在其对象封装一些属性 多态: ? ? ? ? ? ?python默认支持多态, 多态指的是一种事务具有多种形态 ? ? ? ? ? ?1.多态可以增加代码的灵活度: ? ? ? ? ? ?2.以继承和重写父类方法为前提: ?

python学习第十六天 --继承进阶篇

这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展.但是有时候会发现,子类需要继承一个类的方法,又要继承另一个类的方法,才能完成要实现的功能.怎么办?python给我们提供了多继承的概念.类似于C++语言,俗称类的多继承. 看个例子: >>> class Animal(object): def __init__(self,name): se

Python(面向对象编程——2 继承、派生、组合、抽象类)

继承与派生 ''' 继承:属于 组合:包含 一. 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). 继承有什么好处?最大的好处是子类获得了父类的全部功能. 继承:是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构. 二. 组合指的是,在一个类中以另外一个类的对象作为数据属性,称

python面向对象三大特性之继承、多态

继承 什么是继承          所谓继承指提供了同一类对象共性的处理方法,子类继承父类共性的东西. 这样有利于代码的复用性,即子类拥有父类的方法.通过继承创建的新类称为"子类"或"派生类",被继承的类称为"基类"."父类"或"超类". 继承可以想象成什么是什么的关系 python中类的继承分为:单继承和多继承 class Parent1: # 父类1 pass class Parent2: #父类2 p

Python面向对象学习小结之三 继承

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

python中类与对象之继承

面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在两个class才能产生这种关系:被继承的class称为父类,继承的class称为子类. 2.为什么要使用继承? 现实中,通过继承,子可以直接使用父的内容. 在程序中,通过继承,子类可以直接使用父类已有的代码 3.如何使用继承 #继承的定义 class Father1: x = 13 print('这是父类的x', x) def coding(self): print('我是父

Python面向对象(四)—继承、多态

继承 语法 1.代码: class 子类(父类): def __init__(self,参数列表): super().__init__(参数列表) self.自身实例变量 = 参数 设计角度: 先有子类,再有父类. 抽象化的过程:子(具体,小概念) -> 父(抽象,大概念) 编码角度: 先写父类,再写子类. 2.说明: -- 子类拥有父类的所有成员. -- 子类如果没有构造函数,将自动执行父类的,但如果有构造函数将覆盖父类的.此时必须通过super()函数调用父类的构造函数,以确保父类属性被正常

转 python语法学习面向对象之继承

传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始化方法__init__,可以理解为构造,self,理解为this,等等在前一篇文章中介绍过,现在就学习类的继承. 继承: 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法   class 派生类

python之7-2类的继承与多态

类的继承的意思就如同父子关系一样,这个儿子继承了父亲的一切,但是在某些地方(属性)相同的时候,儿子的属性大于老子的属性(覆盖),最底层类,总会继承最接近它的那个类的属性init 类的多态总是和继承相连的,没有继承,就没有多态一说.一个子类的实例,它即属于这个子类,也属于父类,比如:父亲A和儿子B,儿子B即属于儿子类,也属于人类,但是它不属于父亲类 多态是面向对象语言的一个基本特性,多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式.在处理多态对象时,只需要关注它的接口即