python类的继承理解


class A(object):
    def __init__(self, x=0):
        self._x = x
    
    def show_x(self):
        print(self._x)
        
    def show_name(self):
        print('A')
        
        
class B(object):
    def __init__(self, y=0):
        self._y = y
    
    def show_y(self):
        print(self._y)
        
    def show_name(self):
        print('B')
        
        
class C(object):
    def __init__(self, z=0):
        self._z = z
    
    def show_z(self):
        print(self._z)
        
    def show_name(self):
        print('C')
        
# 下面两类D、E,都是继承A、B、C,且A类的优先级最高,A,B,C若有相同的方法优先使用A的方法。三条__init__语句的顺序不影响优先级
class D(A, B, C):
    def __init__(self, x=0, y=0, z=0):
        C.__init__(self, z) # init C        
        A.__init__(self, x) # init A (A最优先)
        B.__init__(self, y) # init B
        
class E(A, B, C):
    def __init__(self, x=0, y=0, z=0):
        super(E, self).__init__(x) # init A (A最优先)  # 此句可简写成:super().__init__(x)
        super(A, self).__init__(y) # init B
        super(B, self).__init__(z) # init C
        
        
        
# 测试
if __name__ == '__main__':
    print(D.mro())
    d = D(1,2,3)
    d.show_x()    # 1
    d.show_y()    # 2
    d.show_z()    # 3
    d.show_name() # A

    print(E.mro())
    e = E(1,2,3)
    e.show_x()    # 1
    e.show_y()    # 2
    e.show_z()    # 3
    e.show_name() # A
    input()


转载于:https://my.oschina.net/u/3833922/blog/3046973

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值