【发布时间】:2016-03-21 13:13:11
【问题描述】:
给定一个 Python 2 元类定义为:
class Meta(type):
def __init__(cls, name, bases, dct):
pass
dct 参数的目的是什么?根据我的发现,它包含与cls.__dict__ 相同的信息。不同之处在于,对dct 进行更改对具体类没有影响,但向cls.__dict__ 添加内容(即通过cls.__dict__['a']=True 或cls.a=True)会产生影响。
class Meta(type):
def __init__(cls, name, bases, dct):
cls.a = True
dct['b'] = True
class Test(object):
__metaclass__ = Meta
t = Test()
print t.a
print t.b # Raises an AttributeError
是否存在不同的情况?
【问题讨论】:
标签: python python-2.x metaclass