Maison >développement back-end >Tutoriel Python >Comment ajouter et accéder à des méthodes d'instance en 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>>
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
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)
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'
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!