python继承

继承:
    是为了重用前人的成果
    pytthon:多继承:默认子类不会掉父类构造;想调用
JAVA中并不是单单为了不劳而获,本质是为了多态
实现:更好的多态,解决了多继承的尴尬
中单继承,确保每个类只有一个父类,好处在对象的实例化过程变得简单
对象实例化过程:从祖先到自己的每一个构造方法都会执行过程
多态是也不复杂,因为父类要被重写的方法只有一个


class A():
    def __init__(self):
        print("A的构造方法")

class A1():
    def __init__(self):
        print("A1的构造方法")
class B(A,A1):
    def __init__(self):
        A.__init__(self)
        A1.__init__(self)
        print("B的构造方法")
class B1():
    def __init__(self):
        print("B1的构造方法")
class C(B,B1):
    def __init__(self):
        B1.__init__(self)#任意指明调用
        B.__init__(self)
        #super(C,self).__init__()#从左的第一个
        print("C的构造方法")
C=C()
运行结果:
B1的构造方法
A的构造方法
A1的构造方法
B的构造方法
C的构造方法
注:在class C()中,因为指明了B1方法所以先运行的B1的方法,然后运行B类里面的,因B继承了A,A1方法,里面也是指明了A,A1方法所以运行A,A1方法
如果没有指明继承父类方法,不会调用父类的Init构造方法,例如
class A():
    def __init__(self):
        print("A的构造方法")

class A1():
    def __init__(self):
        print("A1的构造方法")
class B(A,A1):
    def __init__(self):
    #     A.__init__(self)
    #     A1.__init__(self)
        print("B的构造方法")
class B1():
    def __init__(self):
        print("B1的构造方法")
class C(B,B1):
    def __init__(self):
        B1.__init__(self)#任意指明调用
        B.__init__(self)
        #super(C,self).__init__()#从左的第一个
        print("C的构造方法")
C=C()
结果:
B1的构造方法
B的构造方法
C的构造方法
方法重写:从左往右(从下往上)找找重写方法

 
class A():
    def __init__(self):
        print("A的构造方法")
    def foo(self):
        print("aaa")
class A1():
    def __init__(self):
        print("A1的构造方法")
class B(A,A1):
    def __init__(self):
    #     A.__init__(self)
    #     A1.__init__(self)
        print("B的构造方法")
class B1():
    def __init__(self):
        print("B1的构造方法")
class C(B,B1):
    def __init__(self):
        B1.__init__(self)#任意指明调用
        B.__init__(self)
        #super(C,self).__init__()#从左的第一个
        print("C的构造方法")
C=C()
C.foo()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值