python类封装,继承与多态

装饰器 property

将类的函数伪装成对象的属性,使用该装饰器装饰的类的方法 可用对象名.方法名调用。此时不用加括号
python类封装,继承与多态_第1张图片
此时的learn方法是用的类属性的调用方式进行调用

类的继承

python类封装,继承与多态_第2张图片

  1. 类的继承方式,在类名的括号中加入要继承类的类名,当要继承多个类时,用逗号隔开。利用类的内置属性__bases__可以查看当前类继承了哪些类
  2. 在对象调用方法时候,优先在子类中找,当子类中类有这个方法时候,在从父类找。
  3. 当子类和父类拥有相同的方法时,对象在调用的时候,优先调用子类中的方法(重写),当你不想父类中的方法被重写的时候,可以把父类中的方法用__开头,将此方法设置为私有
  4. 在多继承时,要查找的属性不存在的时候,当类是新式类的时候,
    按照广度优先进行查找,为经典类时,以深度优先查找。python3都为新式类
  5. 调用父类的方法super().方法名(参数)

多态

  1. 抽象类的定义:class Animal(metaclass=abc.ABCMATE):
    import abc
    class Animal(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def talk(self):
    pass

通过这种方式限制子类必须有一个talk方法

你可能感兴趣的:(python类封装,继承与多态)