Classe de définition des fonctions à l'intérieur des fonctions de classe: Python
J'ai un code dans lequel je veux defina une fonction de classe à l'intérieur d'une fonction de classe. Voici un exemple simple de ce que je veux faire. L'objectif de ce programme est d'imprimer 4.
>>> class bluh:
... def haha(self):
... print 3
... def __init__(self):
... def haha(self):
... print 4
...
>>> x = bluh()
>>> x.haha()
3
Comment dois-je vraiment écrit ce programme pour faire ce que je veux?
- Si votre but est d'imprimer 4, pourquoi tu fais ça au lieu de simplement définir
haha
comme une méthode régulière? Qu'espérez-vous gagner en le faisant de cette manière? - Mon but n'est pas fait pour imprimer 4. C'est juste beaucoup plus simple version de ce que je suis en train de faire, ce qui implique le contrôle des déclarations, beaucoup d'autres méthodes, etc. J'ai failli mettre une partie d'expliquer cela à la fin de mon post, mais a finalement décidé que la plupart des gens qui fréquentent ce site pourrait comprendre cela.
- Le point est, vous n'avez pas expliqué pourquoi vous pensez qu'il est nécessaire d'utiliser les fonctions imbriquées dans la première place.
Vous devez vous connecter pour publier un commentaire.
Cela dépend vraiment de ce que vous voulez faire.
Dans l'exemple précédent,
haha
n'est pas vraiment une méthode, C'est juste une fonction. Mais il sera ramasser une référence àself
de la fermeture et de beaucoup de temps, c'est probablement suffisant. Si vous voulez vraiment monkeypatch/duck punch une nouvelle méthode sur une instance, vous aurez besoin d'utilisertypes.MethodType
. Voir ici pour un exemple.Cela va ajouter une méthode à une classe à partir d'une instance.
Dans la plupart des cas pas la chose que vous voulez faire, mais la langue, il est aussi simple que cela.
L'utilisation d'un tel truc peut être justifié lorsque vous construisez une sorte de data-driven self-modifying code (pas tous les jours le cas pour la plupart d'entre nous)