python类封装,继承与多态
装饰器 property
将类的函数伪装成对象的属性,使用该装饰器装饰的类的方法 可用对象名.方法名调用。此时不用加括号
此时的learn方法是用的类属性的调用方式进行调用
类的继承
- 类的继承方式,在类名的括号中加入要继承类的类名,当要继承多个类时,用逗号隔开。利用类的内置属性__bases__可以查看当前类继承了哪些类
- 在对象调用方法时候,优先在子类中找,当子类中类有这个方法时候,在从父类找。
- 当子类和父类拥有相同的方法时,对象在调用的时候,优先调用子类中的方法(重写),当你不想父类中的方法被重写的时候,可以把父类中的方法用__开头,将此方法设置为私有
- 在多继承时,要查找的属性不存在的时候,当类是新式类的时候,
按照广度优先进行查找,为经典类时,以深度优先查找。python3都为新式类 - 调用父类的方法super().方法名(参数)
多态
- 抽象类的定义:class Animal(metaclass=abc.ABCMATE):
import abc
class Animal(metaclass=abc.ABCMeta):
@abc.abstractmethod
def talk(self):
pass
通过这种方式限制子类必须有一个talk方法