Der Unterschied zwischen Python-Klassenmethoden und gewöhnlichen Methoden
Im Folgenden werden Beispiele verwendet, um die Unterschiede zu veranschaulichen.
Definieren Sie zunächst eine Klasse mit zwei Methoden:
class Apple(object): def get_apple(self, n): print "apple: %s,%s" % (self,n) @classmethod def get_class_apple(cls, n): print "apple: %s,%s" % (cls,n)
Gewöhnliche Methode der Klasse
Gewöhnliche Methode der Klasse, die sein muss wird von einer Instanz der Klasse aufgerufen.
a = Apple() a.get_apple(2)
Ausgabeergebnis
apple: <__main__.Apple object at 0x7fa3a9202ed0>,2
Sehen Sie sich die Bindungsbeziehung an:
print (a.get_apple) <bound method Apple.get_apple of <__main__.Apple object at 0x7fa3a9202ed0>>
Die gewöhnlichen Methoden der Klasse können nur mit Instanzen der Klasse verwendet werden. Wenn Sie eine Klasse verwenden, um eine normale Methode aufzurufen, tritt der folgende Fehler auf:
Apple.get_apple(2) Traceback (most recent call last): File "static.py", line 22, in <module> Apple.get_apple(2) TypeError: unbound method get_apple() must be called with Apple instance as first argument (got int instance instead)
Klassenmethode
Klassenmethode, was darauf hinweist, dass die Methode an die Klasse gebunden ist.
a.get_class_apple(3) Apple.get_class_apple(3) apple: <class '__main__.Apple'>,3 apple: <class '__main__.Apple'>,3
Sehen Sie sich die Bindungsbeziehung an:
print (a.get_class_apple) print (Apple.get_class_apple)
Das Ausgabeergebnis ist das gleiche, wenn eine Instanz verwendet und als Klasse aufgerufen wird.
<bound method type.get_class_apple of <class '__main__.Apple'>> <bound method type.get_class_apple of <class '__main__.Apple'>>
Verwandte Empfehlungen: „Python-Tutorial“
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Python-Klassenmethoden und gewöhnlichen Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!