'''对象族谱之归纳总结'''
'''
家族分类:
0.type
对象家族的原点,宇宙大爆炸的奇点,python底层实现的基元类,不可追究
是基元类,是超元类,是父元类,是始祖类
1.元类
是类的类,type的子类,与type同属于元类
该类生成的实例对象是对象类
2.对象类
对象家族的第二阶级,是对象直接的管理者
是对象的类
3.对象
家族基层,是有生命的属性和方法的集合
超然物外:
object:
生命之神,产生生命,生命本源
生命被类赋予属性和行为方法,才造就了繁复多彩的对象
基本方法再解读:
__new__:获取对象
获取对象,对象不一定是新生成的,可以自定义的返回
以下论述严格按照标准叙述,不讨论自定义奇葩返回值
1.元类
调用type生成对象类
2.对象类
生成对象实例
对象类中未实现此方法则查找对应元类__call__方法
对应元类未实现则在type中进行查找,type内部已经实现此方法
__init__:初始化对象
对__new__返回的对象进行初始化
一切依据__new__返回对象进行操作
自定义奇葩返回对象不讨论
1.元类
生成的对象为类,赋予的属性都属于类属性
2.对象类
生成实例对象,赋予的属性为实例对象属性
__call__:对象方法调用
1.元类
生成对象为类,此方法必须生成返回对象,防止对象类未实现__new__方法导致生成对象失败
2.对象类
自定义,工作中无要求随意定义和使用
一般元类纠结点
一般自定义元类的纠结原因,在于其承上启下的诸多概念
0.概念的初探
元类在之前的编程语言中并未出现,导致对新概念的不清晰,不了解
1.创建对象方法
由于创建的对象是类,不论是概念还是创建方法均属于一个迥异的边缘,理解不清晰
2.__call__的限制
由于实例对象的懒惰,可能没有实现__new__方法,不能自己创建对象
在自己创建对象之后,还需要为对象的对象创建考虑
在实例对象不能生育的情况下为他借宫产子
或许在简单的方法复杂化之后,未能及时的加深理解,元类中还要考虑自身对象创建和对象对象创建的问题才是真正让人摸不着门道的地方
__call__初始的无公害,无要求,未定义可能才是元类理解的盲点
毕竟也不是哪个类都追究如何产生一个对象,都忽略了__new__方法的作用
如何创建一个类,如何创建一个对象,这或许是这次学习最大的收获
创建对象也不是类名进行方法调用就会有的,其中还是有值得探讨的步骤
'''
对象族谱之归纳总结
最新推荐文章于 2020-04-03 14:49:53 发布