1
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スロー属性エラーここメタクラスを構成します。 Pythonバージョンの競合
が出力されます(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
どのように私はこの問題を解決することができますか?メタクラスはさまざまな方法で動作しますか?