【发布时间】:2013-01-08 10:26:40
【问题描述】:
从this answer 到“什么是元类?”我得到了这个:
你先写了 class Foo(object),但是 class 对象 Foo 还没有在内存中创建。
Python 将在类定义中查找 metaclass。如果找到它,它将使用它来创建对象类 Foo。如果没有,它将使用 type 来创建类。
经过测试,似乎类的属性是在类的构造函数运行之前实例化的。我误会了什么?
测试代码:
class meta(type):
def __init__(cls, name, bases, dic):
type.__init__(cls, name, bases, dic)
print hasattr(cls, "a")
cls.a = "1"
class A(object):
a = "a"
__metaclass__ = meta
class B(object):
__metaclass__ = meta
class C(object):
__metaclass__ = meta
a = "a"
print A.a
print B.a
print C.a
输出:
True
False
True
1
1
1
【问题讨论】:
标签: python python-2.7 metaclass