mro 及多继承;property;上下文管理器

#多态
1. python有多态,但是不是一个严谨的多态,因为Python是一个动态语言,没有强制类型
#封装
一个函数一个功能,一个类是多个相关函数的集合
#继承
子类中相同的方法会放到父类中,减少代码重复性

#mro 及多继承
mro类初始化顺序表,保持我们的类只初始化一次
super()从mro顺序表中找到自已的位置,从mro顺序表中调用下一个类

#实例与类之间的调用关系
实例可以调用三种类型的方法(静态,类,实例),可以调用类的属性及自我的属性
类可以调用三种类型的方法(静态,类,实例),但是不能调用实例上的属性
![](images/1.png)

#property
1. 完成常量,常量是能得到到数据,但是不能修改数据,一般常量都是大写
2. 代码实现
这个常量一般在init中创建一个私有的属性
提供一个得到这个私有属性的方法,但是我们为了让常量更直观,在方法上加入装饰器@property
调用就可以使用(类名.方法名)
![](images/2.png)

#魔法属性与方法
__dict__:查看属性
__class__:查看谁创建了我

__init__:初始化
__new__:创建时,一般单例
__call__:实例()调用

# 上下文管理器
只要实现了__init__ ,__enter__,__exit__这三个方法就可以说实现了上下文管理器
1.简化了代码
2.程序退出时自动关闭
3.操作时出现异常也会自动关闭

with myopen() as f:
pass
myopen()这个调用__init__方法
as 后面的f由__enter__这个方法返回
程序执行完后退出我们会执行__exit__,一般用来关闭资源


猜你喜欢

转载自www.cnblogs.com/rex-zheng/p/9021535.html
MRO