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