类继承-super, 私有变量

多继承

class A:
    def ces(self):
        print('a-ces')    
class B(A):
    def ces(self):
        print('b-ces')

class C(A):
    def ces(self):
        print('c-ces')

class D(B, C):
    def ces(self):
        super(B, self).ces()  # c-ces
        super(C, self).ces()  # a-ces
        super(D, self).ces()  # b-ces
        super().ces()         # b-ces  相当于本身 super(D, self).ces()
        
        print('d-ces')

d = D()

print(d.__class__.mro())
print(d.ces())

>>> [<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>
, <class 'object'>] b-ces b-ces d-ces None

 私有变量: 继承时类的私有变量不会被继承

class Animal:
    # 类属性 (静态字段)
    eye = 2
    _age = 18
    __leg = 14
    def __init__(self, name):
        self.name = name

    def run(self):
        print(Animal.__leg)


class Dog(Animal):    # 继承后调用私有属性

    def fn(self):
     print(Animal._age)  # 但下划线调用
print(Animal._Animal__leg)  # 双

私有方法通过间接的方法调用私有方法:

class Animal:
    # 类属性 (静态字段)
    eye = 2
    _age = 18
    __leg = 14

    # 普通方法间接调用私有方法
    def test(self):
        self.__pwd()

    def __pwd(self):
        print('pwd')

 

posted on 2018-03-30 13:05 .Tang 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/tangpg/p/8675609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值