码迷,mamicode.com
首页 > 编程语言 > 详细

理解python元类

时间:2020-01-27 17:39:48      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:变量   classes   推荐   定义类   程序   装饰器   程序员   代码   http   

两篇很好的文章:

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元类

标签:变量   classes   推荐   定义类   程序   装饰器   程序员   代码   http   

原文地址:https://www.cnblogs.com/olivertian/p/12236336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!