0

私は今日、自分の問題の解決策だけが欲しいという質問をしました。私はメタクラスの使用を期待していましたが、何か違うものが得られ、うまくいきました。しかし、今、以前の質問に関連する何かに興味があります: なぜメタクラスが機能しなかったのですか?

ここに私の以前の質問へのリンクがありますが、この質問に答えるためにそれを読む必要はありません:単純なメタクラスを作成するにはどうすればよいですか?

では、もう一度この質問をさせてください。今回はまったく別の理由からです。単純なメタクラスを作成するにはどうすればよいですか? ここに私が持っているものがありますが、なぜ機能しないのかわかりません。

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'
4

1 に答える 1