[PYTHON] Methoden können außerhalb der Klassendefinition definiert werden

Python-Methoden werden normalerweise definiert, indem eine def-Anweisung in die Klassendefinition wie folgt geschrieben wird: (Der gesamte Code ist Python3.)

python


class Foo:
    def __init__(self, name):
        self.name = name

    def print_name(self):
        print(self.name)

#Erstellen Sie eine Instanz von Foo
foo = Foo('foo') 

Sie können es jedoch auch definieren, indem Sie eine normale Funktion außerhalb der Klasse schreiben, nachdem Sie die Klasse definiert und die Funktion in den Attributen der Klasse festgelegt haben. Auf diese Weise, wenn die obige Methode "print_name" außerhalb der Klasse definiert ist:

python


class Bar:
    def __init__(self, name):
        self.name = name

#Erstellen Sie eine Instanz von Bar
bar = Bar('bar')

def print_name(self):
    print(self.name)

Bar.print_name = print_name

Vergleicht man das Verhalten und den Typ von "print_name" von "foo" und "bar", so sieht die Ausgabe wie folgt aus.

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

Sowohl in foo als auch in bar ist der Typ von print_name`` gebundene Methode, und Sie können sehen, dass Sie die Methode auch dann definieren können, wenn Sie sie mit einer Funktion definieren, als ob Sie sie in der Klassendefinition definieren würden.

Recommended Posts

Methoden können außerhalb der Klassendefinition definiert werden
Kennen Sie den Speicherort der Python-Klassendefinitionsdatei.
Qiita kann jetzt auf der Konsole (Shell) angezeigt werden.
Listen Sie die Klassen auf, auf die ObjCClass verweisen kann
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können