【发布时间】:2016-08-20 18:06:06
【问题描述】:
class UpperAttrMetaclass(type):
def __new__(cls, name, bases, attrs):
attrs["b"] = 77
return super(UpperAttrMetaclass, cls).__new__(cls, name, bases, attrs)
class Cls(object):
__metaclass__ = UpperAttrMetaclass
f = Cls()
print(f.b)
我尝试在 Python 3.4.3 和 2.7.11 上运行此代码。
在 2.7.11 中它运行良好(输出 - 77),但 3.4.3 抛出 属性错误
这是输出 (3.4.3)
Traceback (most recent call last):
File "D:/LABS/BSUIR_labs/4cem/PYTHON/lab2/meta.py", line 8, in <module>
print(f.b)
AttributeError: 'Cls' object has no attribute 'b'
Process finished with exit code 1
我该如何解决这个问题?元类的工作方式不同??
【问题讨论】:
标签: python python-2.7 attributes python-3.4 metaclass