モジュールの属性にアクセスするときの一般的な動作には、静的に定義された属性の取得が含まれます。しかし、モジュール内でクラスのインスタンスを動的に作成し、属性にアクセスしたときにそのクラスのメソッドを呼び出すメカニズムが必要な場合はどうなるでしょうか?
これを実現するには、2 つの障害を克服する必要があります:
両方の制限を回避するために、属性検索が失敗するたびに目的のクラスの新しいインスタンスを動的に作成するラッパーを採用します。
<code class="python">def __getattr__(mod, name): return getattr(A(), name)</code>
この実装では、「A」はアクセスしたいメソッドが含まれるモジュール内のクラス。ただし、この解決策では、複数のインスタンスの作成とグローバルのバイパスにより、動作に微妙な違いが生じる可能性があります。
あるいは、Python のインポート機構を利用して、モジュール自体を目的のクラスのインスタンスに置き換えます。
<code class="python">class Foo: def funct1(self, args): <code> sys.modules[__name__] = Foo()</code>
この手法により、モジュール上で getattr やその他のメタメソッドを効果的に使用できるようになります。
これらの手法を理解することで、モジュールの機能を拡張して動的メソッド呼び出しを含めることができます。コードに対する柔軟性。
以上がPython でモジュールのクラス メソッドを動的に呼び出すにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。