Python_面向对象编程三大特性

继承,多态,封装

继承:

  子类继承父类的所有数据属性和方法属性,假如子类吃饭动作和父类不一样,那就子类就有自己的吃饭动作,子类比父类功能更多,也是ok的

python中类的继承分为:单继承和多继承

class Parent1:
    pass
class Parent2:
    pass

class SubSon(Parent1): #单继承
    pass
class SubSon(Parent1,Parent2): #多继承
    pass

什么时候使用继承?

1当类之间有很多相同的功能,提取这些共同的功能做成基类(父类),用继承比较好

2当类之前有明显不同,但是类之间有所关联,可以用组合

继承有两种含义:

含义一:继承基类的属性,并做出自己的改变或者扩展功能(代码重用,但是偶合性太强)

含义二:声明某个子类兼容于基类,定义一个接口类,子类继承接口类,并且实现接口中定义的方法,接口的方法是抽象的,具体实现由子类实现

#接口类的方法没有具体实现
class People:
    def read(self):
        pass
    def write(self):
        pass
    
#子类继承接口类后,实现具体方法
class Child(People):
    def read(self):
        print("我在认真的读书")
    def write(self):
        print("我在努力的写作")

继承顺序

终极解密:python是如何实现继承的,对于定义的每个类,python会计算出一个方法解析顺序(MRO)列表,然后按照MRO列表顺序,从右到右开妈查找基类,直到找到第一个匹配的属性的类停止,MRO列表的构造是通过一个C3线性化算法来实现的,合并所有父类的MRO列表并遵循三条准则:

1,子类会先于父类被检查

2,多个父类会根据它们在MRO列表中的顺序被检查

3,如果类存在2个合法的父类,选择第一个父类

子类中调用父类的方法

多态:

  有很多子类都在调用吃饭的方法,但是每个子类吃饭的动作却不尽相同,这就多态

封装:

  类的一些数据属性不想让外界访问到的,可以 __name

猜你喜欢

转载自www.cnblogs.com/iamjames/p/11348995.html