封装方法:在方法名字前加上双下划线
封装方法的好处:提高安全性,隔离复杂度(将复杂的内容隔离到内部)
外部只留下简单的接口,使用者难度降低
1.私有的属性和方法名称:在检测语法时自动加上_类名前缀
python是通过这样的转换方式来实现封装
2.只有在类的内部的双下划线才会被自动转换
并且这个转换过程只执行一次,在类定义完成后,后续添加的以双下划线开头的名称不会自动转换
3.父类中私有的方法,子类无法使用
子类无法覆盖父类的私有方法,因为python自动变形的机制
可以绕过封装的限制直接访问但毫无意义
有些属性的值通过计算而得并不固定,需要添加方法计算,使得调用方式改变,可以通过property伪装成正常的访问方式
property可以将方法的调用方式伪装成属性
property提供setter方法(用户修改属性的值),和deleter(删除属性的值)
property是一种特殊的属性,访问他时会执行一段功能,返回值
多态:多种状态形态
不同对象可以响应同一方法作出不同行为得到不同结果
实现多态?
多个子类覆盖父类中同一方法
抽象方法:
1.为类指定元类为abc.ABCMeta
2.在相应方法上加上abc.abstractmethod装饰器
多态好处:完全不需要考虑得到的对象类型,只需要使用基类中的内容,增加程序的灵活性,增加程序的可扩展性
python推崇简单的编程方式
鸭子类型:如果一个对象行为与鸭子相似,那么就可以把它当成鸭子