"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment lier des méthodes non liées en Python sans les appeler ?

Comment lier des méthodes non liées en Python sans les appeler ?

Publié le 2024-11-07
Parcourir:472

How to Bind Unbound Methods in Python Without Calling Them?

Liaison de méthodes non liées : une approche pythonique

En Python, les méthodes non liées peuvent souvent poser un défi lorsqu'on tente de les lier à une instance sans les appeler par inadvertance. Ce problème survient, par exemple, lorsque vous travaillez avec wxPython et que vous souhaitez organiser les données des boutons sous la forme d'une liste de tuples au niveau de la classe.

Comme mentionné dans le paragraphe d'introduction, s'appuyer sur functools.partial peut fournir une solution de contournement, mais il peut y avoir une solution plus élégante et pythonique. Heureusement, il existe une approche efficace pour lier des méthodes non liées sans les invoquer.

Les fonctions Python possèdent la capacité d'agir comme descripteurs, ce qui permet de les lier en invoquant leur méthode get. Cette approche garantit que la méthode indépendante est liée à l'instance spécifique, ce qui lui permet d'être transmise sans aucun appel inattendu.

Exemple de code :

# Declare an unbound method
def some_method(self):
    # Method implementation here

# Bind the unbound method to an instance
instance = MyClass()
bound_method = some_method.__get__(instance, MyClass)

# Continue passing around the bound method without calling it

Conclusion :

L'utilisation de la méthode get comme décrit vous permet de lier de manière transparente des méthodes indépendantes aux instances, en préservant leur statut indépendant , et résoudre le problème rencontré lors de l'utilisation des boutons de wxPython.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3