10
votes

Méthodes statiques ajoutées dynamiquement à une classe Python

i a trouvé vraiment bon exemple comment ajouter une nouvelle méthode À la classe dynamiquement (classe de transplantation): xxx

mais je ne comprends pas, comment le modifier pour ajouter des méthodes statiques. Quelqu'un peut-il m'aider?


4 commentaires

Qu'entendez-vous par «statique»?


@ JooSimpileborg: le @StaticMethod décorateur .


Et au fait, vous n'ajoutez pas les fonctions à la classe, vous les ajoutez à une instance de la classe. Si vous remplacez jimmy dans les appels avec le patient patient , vous ajoutez des méthodes à la classe.


@ JooSimpileborg: pour un staticmethod pour fonctionner a à ajouter à la classe; C'est un descripteur.


3 Réponses :


22
votes

Tout ce que vous avez à faire est d'envelopper la fonction dans un staticmethod () appel: xxx

ou appliquez-le sous forme de décorateur à la définition de la fonction: xxx

qui se présente à la même chose.

rappelez-vous; Le @Decorator Syntaxe est juste Syntaxtic Sugar pour écriture cible = décorateur (cible) , où cible est l'objet décoré. < / p>


0 commentaires

5
votes

Je ne vois pas un staticmethod ici. La fonction dire code> s'attend à ce que deux arguments, et le premier argument, hôte code>, semble être l'instance de la classe.

Il semble donc que vous essayiez simplement de joindre une nouvelle méthode à une classe. Qui peut être fait sans fonction de fonctionnement ni de transplantation: p> xxx pré>

rendements p> xxx pré>


Si vous vouliez attacher un StaticMethod, alors, comme la réponse de Martijnpieters répondit, utilisez le StaticMethod Code> Decorator: P>

Goodbye


0 commentaires

0
votes

Eh bien les œuvres suivantes, c'est-à-dire la mise en place d'une méthode statique sur le patient que je pense que l'OP voulait. XXX


0 commentaires