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

Susan Sarandon
Libérer: 2024-10-30 22:02:03
original
858 Les gens l'ont consulté

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 non liée est liée à l'instance spécifique, ce qui lui permet d'être transmise sans aucune invocation inattendue.

Exemple de code :

<code class="python"># 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</code>
Copier après la connexion

Conclusion :

L'emploi 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 en résolvant le problème rencontré lors de l'utilisation des boutons de wxPython.

Ce 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!