Maison >développement back-end >Tutoriel Python >Comment pouvons-nous invoquer dynamiquement des méthodes de classe sur des modules en Python ?
Lors de l'accès aux attributs d'un module, le comportement typique implique la récupération des attributs définis statiquement. Cependant, que se passe-t-il si nous souhaitons un mécanisme pour créer dynamiquement des instances d'une classe dans le module et invoquer des méthodes de cette classe lors de l'accès aux attributs ?
Pour y parvenir, nous devons surmonter deux obstacles :
<code class="python">def __getattr__(mod, name): return getattr(A(), name)</code>Dans cette implémentation, 'A' est la classe du module dont nous souhaitons accéder aux méthodes. Cette solution, cependant, peut conduire à de subtiles différences de comportement en raison de la création de plusieurs instances et du contournement des variables globales.Remplacement par une instance de classeAlternativement, nous pouvons utiliser la machinerie d'importation de Python pour remplacez le module lui-même par une instance de la classe souhaitée.
<code class="python">class Foo: def funct1(self, args): <code> sys.modules[__name__] = Foo()</code>Cette technique nous permet effectivement d'utiliser
getattr et d'autres méta-méthodes sur le module.
NotesCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!