私は今日、自分の問題の解決策だけが欲しいという質問をしました。私はメタクラスの使用を期待していましたが、何か違うものが得られ、うまくいきました。しかし、今、以前の質問に関連する何かに興味があります: なぜメタクラスが機能しなかったのですか?
ここに私の以前の質問へのリンクがありますが、この質問に答えるためにそれを読む必要はありません:単純なメタクラスを作成するにはどうすればよいですか?
では、もう一度この質問をさせてください。今回はまったく別の理由からです。単純なメタクラスを作成するにはどうすればよいですか? ここに私が持っているものがありますが、なぜ機能しないのかわかりません。
class MyMeta(type):
def __new__(mcls, name, bases, attrs):
attrs['my_attr'] = True
return super().__new__(mcls, name, bases, attrs)
class MyClass:
__metaclass__ = MyMeta
print(MyClass.my_attr)
最後の行は、次のエラーを出力します。
AttributeError: type object 'MyClass' has no attribute 'my_attr'