zoukankan      html  css  js  c++  java
  • 类继承-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')
  • 相关阅读:
    [React]核心概念
    [算法]复杂度分析
    [算法]移除指定元素&strSr()的实现
    [算法]合并链表&删除数组重复项
    php _weakup()反序列化漏洞
    Java 注解详解
    MyBatis入门
    Spring 事务管理
    Spring AOP
    Spring JDBC
  • 原文地址:https://www.cnblogs.com/tangpg/p/8675609.html
Copyright © 2011-2022 走看看