目录
1.元类复习
1.什么是元类:
因为一切皆对象这个思想,所以类也是对象,元类构造类,类是由元类实例化得到的
2.所有类的元类是谁?
是type,它是所有类的元类,同时它也是type产生的 。py3中所有的类都继承自object(包括type也继承自object)
object类由type创造,type类也是有type创造。这段话有些难理解,可以这么想type是最顶层的元类,其它的都是它自己创造的或是它创造的类创造的
3.如何自定义元类呢?
凡是继承type的类都叫元类
4._ _ init _ _ 和 _ _ new _ _ 和 _ _ call _ _这三者的关系:
元类中
_ _ init _ _ :控制类的产生,在 _ _ new _ _ 之后
_ _ call _ _ :对着对象的产生
_ _ new _ _:控制类产生最根上,其实本质最根上也不是它,是type(所有类的元类),这个是无法控制的
它们之间的优先级: _ _ call _ _ 是最高优先级的,而 _ _ new _ _ 的优先级大于 _ _ init _ _
_ _ call _ _ > _ _ new _ _ > _ _ init _ _
以生活为例子:
有一个生产魔术道具的工厂
_ _ new _ _ 方法就是决定是否让新的道具进入工厂,相当于门卫,如果新的道具被接受,工厂就会为这个道具分配一个位置
_ _ init _ _ 方法就是工厂里的工人,他接受新道具,将它加工、组装并初始化,确保道具符合工厂的标准
_ _ call _ _ 方法就是工厂的电话号码,当你打电话给工厂并告诉你需要什么道具时,工厂就会制作并提供相应的道具。
综合来看, _ _ new _ _ 决定是否接受新的产品, _ _ init _ _ 初始化产品, _ _ call _ _ 允许你像打电话一样请求产品。这三者共同协作,使得工厂能够创建、初始化和提供产品。
2.单例模式
核心就有一句话:只有一个实例对象,而不管有多少人尝试访问它。
也可以这么想:单例实际作用有点类似多态性,无论有多少对象它们调用的都是同一个实例,就像点快餐的窗口就一个窗口,谁来点餐都是通过这个窗口(实例窗口对象)。
上面的只是便于理解这么解释,实际上单例模式和多态性是不同的概念,单例模式的重点是实例的唯一性和共享,而多态性的重点是多类型对象的一致接口。
标签:10,18,元类,init,call,单例,new,type From: https://www.cnblogs.com/slzjb/p/17772234.html