面向对象三大特征: 封装 继承 多态
封装 : 将一些内容封装到一个地方. 而且还可以取出来
类设置静态属性,设置一些方法 都是封装
多态 : 一个事物产生多种形态
Python中默认支持多态
鸭子类型
Python中: 看起来像鸭子 那么你就是鸭子
class A:
def aaa(self):
pass
def bbb(self):
pass
class B:
def aaa(self):
pass
def bbb(self):
pass
A,B两个类,没有任何关系,相互独立,但是里面的功能相似,所以Python一般会将类似于A,B两个类里面的相似的功能让其命名相同.
1.A,B虽然无关系,但是很默契的指定了一个规范,让你使用起来更方便
面向对象类的约束
1. 在父类建立一种约束
使用raise TypeError('代码格式错误')
在父类定义一个方法,主动跑出错误异常,如果子类没有定义这个方法,并且沿用了父类的方法,即会报错.Python推荐的一种约束方式
2.利用抽象类(指定一种规范)的概念,建立一种约束
利用抽象类的概念:基类如上设置,子类如果没有定义此方法,在实力化对象时就会报错.
# 固定写法
from adc import ABCMeta, abstractmothod
class xxx(metaclass=ABCMeta):
#abstractmethod
def xxx(self):
pass
super的深入理解
super()严格意义上并不是执行父类的方法
单继承: super()肯定是执行父类的方法
多继承:严格按照super(S,self)从属的类的mro的执行顺序而执行S类的下一位