は明示的にインポートすることなく、かつ(@something.some_decorator
を)それをプレフィックスすることなく、特定のメソッドのデコレータ利用できるようにするようにクラスを変更することが可能です:明示的にインポートすることなくクラス内で新しいデコレータを使用できるようにするにはどうすればよいですか?
class SomeClass:
@some_decorator
def some_method(self):
pass
私はこれが可能だとは思いませんそれはあまりにも遅く適用されるので、クラスデコレータで。より有望なオプションは、メタクラスを使用しているようですが、わかりません。some_decorator
をSomeClass
という名前空間に導入する必要があります。
staticmethod
とclassmethod
が組み込みであることを指摘してくれた@MartijnPietersに感謝します。私はそれらがtype
の機械の一部であると期待していました。
明確にするために、明示的なユースケースはありませんが、これがすべて可能かどうか不思議です。
追加、質問に答えました。私が単にデコレータをローカルにインポートしたり定義したりすることを念頭に置いていた元の理由は、特定のコンテナ属性がオブジェクト上で初期化されている場合にのみ機能するデコレータを定義していました。デコレータの可用性。属性が存在するかどうか、デコレータ内で属性を初期化していないかどうかを確認しましたが、ここではそれほど悪いことはありません。
これを更新していただきありがとうございます。以前の質問より*が*はっきりしています。 –