Les méthodes Python sont généralement définies en écrivant une instruction def
dans la définition de classe comme suit: (Tout le code est Python3.)
python
class Foo:
def __init__(self, name):
self.name = name
def print_name(self):
print(self.name)
#Créer une instance de Foo
foo = Foo('foo')
Cependant, vous pouvez également le définir en écrivant une fonction normale en dehors de la classe après avoir défini la classe et défini la fonction dans les attributs de la classe. De cette façon, si la méthode print_name
ci-dessus est définie en dehors de la classe:
python
class Bar:
def __init__(self, name):
self.name = name
#Créer une instance de Bar
bar = Bar('bar')
def print_name(self):
print(self.name)
Bar.print_name = print_name
En comparant le comportement et le type de print_name
de foo
et de bar
, la sortie est la suivante.
python
>>> foo.print_name()
foo
>>> bar.print_name()
bar
>>> foo.print_name
<bound method Foo.print_name of <__main__.Foo object at 0x03C83610>>
>>> bar.print_name
<bound method Bar.print_name of <__main__.Bar object at 0x042F5D10>>
Dans «foo» et «bar», le type de «print_name» est «méthode liée», et vous pouvez voir que même si vous le définissez avec une fonction, vous pouvez définir la méthode exactement comme si vous la définissiez dans la définition de classe.
Recommended Posts