理解python元类
Posted olivertian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解python元类相关的知识,希望对你有一定的参考价值。
两篇很好的文章:
https://blog.51cto.com/kaifly/2115249
https://stackoverflow.com/questions/100003/what-are-metaclasses-in-python(看最高赞,即第二个回答)
注释:
1、type是type自己的元类,但是不能通过纯python代码让type生成type类,这是解释器层实现的
2、用class定义类时,如果不指定metaclass,就会去父类找metaclass,如果父类都没有指定,那就用默认的type
3、python类属性和方法相当于c++的静态成员数据和函数,当一类继承另一类时,并不是复制一份到子类,而是共享同一份
class Base: score = 78 class Child(Base): pass print(Child.score) Base.score = 87 print(Child.score) 输出:78 87
说明子类和父类共享一个变量score,而不是将score拷贝一份到子类。
4、元类其实就是在类对象创造之前,程序员按照自己的需求对类的创建过程进行修修改改,而类装饰器是在类对象被创建之后对类进行修修改改,两者都可以达到对类对象进行定制的目的,对简单的定制更推荐使用类装饰器,因为使用元类比较难理解(对新手而言)
以上是关于理解python元类的主要内容,如果未能解决你的问题,请参考以下文章