Les méthodes peuvent être définies en dehors de la définition de classe

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

Les méthodes peuvent être définies en dehors de la définition de classe
Connaissez l'emplacement du fichier de définition de classe Python.
Qiita peut maintenant être visualisé sur la console (shell)
Lister les classes qui peuvent être référencées par ObjCClass
[Django] Noms de champs pouvant être utilisés pour le modèle utilisateur, l'enregistrement des utilisateurs et les méthodes de connexion