Maison > développement back-end > Tutoriel Python > Comment ajouter et accéder à des méthodes d'instance en Python ?

Comment ajouter et accéder à des méthodes d'instance en Python ?

Susan Sarandon
Libérer: 2024-12-20 17:38:10
original
685 Les gens l'ont consulté

How Do I Add and Access Instance Methods in Python?

Accès aux méthodes d'instance

En Python, les objets ont deux types de méthodes : les fonctions et les méthodes liées. Les méthodes liées sont associées à une instance spécifique et transmettent l'instance comme premier argument lorsqu'elles sont appelées. Les fonctions, en revanche, ne sont pas liées et peuvent être modifiées à tout moment.

Pour illustrer la différence :

def foo():
    print("foo")

class A:
    def bar(self):
        print("bar")

a = A()

print(foo)  # <function foo at 0x00A98D70>
print(a.bar)  # <bound method A.bar of <__main__.A instance at 0x00A9BC88>>
Copier après la connexion

Ajout de méthodes aux définitions de classe

Vous pouvez modifier les définitions de classe pour ajouter de nouvelles méthodes pour toutes les instances. Par exemple, ce qui suit ajoute une méthode fooFighters à la classe A :

def fooFighters(self):
    print("fooFighters")

A.fooFighters = fooFighters

a2 = A()
a2.fooFighters()  # fooFighters

# Also affects previously defined instances
a.fooFighters()  # fooFighters
Copier après la connexion

Ajout de méthodes à des instances uniques

L'ajout de méthodes à des instances individuelles est plus complexe. La tentative suivante échoue car la fonction n'est pas liée à l'instance :

def barFighters(self):
    print("barFighters")

a.barFighters = barFighters

a.barFighters()  # TypeError: barFighters() takes exactly 1 argument (0 given)
Copier après la connexion

Pour lier la fonction, utilisez la fonction MethodType du module types :

import types
a.barFighters = types.MethodType(barFighters, a)

a.barFighters()  # barFighters

# Other instances unaffected
a2.barFighters()  # AttributeError: A instance has no attribute 'barFighters'
Copier après la connexion

Exploration plus approfondie des descripteurs et la programmation des métaclasses fournit des techniques plus avancées pour manipuler les méthodes objets.

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