Der Unterschied zwischen Python-Klassenmethoden und gewöhnlichen Methoden

藏色散人
Freigeben: 2019-07-03 09:45:03
Original
3851 Leute haben es durchsucht

Der Unterschied zwischen Python-Klassenmethoden und gewöhnlichen Methoden

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

Ausgabeergebnis

apple: <__main__.Apple object at 0x7fa3a9202ed0>,2
Nach dem Login kopieren

Sehen Sie sich die Bindungsbeziehung an:

print (a.get_apple)
<bound method Apple.get_apple of <__main__.Apple object at 0x7fa3a9202ed0>>
Nach dem Login kopieren

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)
Nach dem Login kopieren

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 &#39;__main__.Apple&#39;>,3
apple: <class &#39;__main__.Apple&#39;>,3
Nach dem Login kopieren

Sehen Sie sich die Bindungsbeziehung an:

print (a.get_class_apple) print (Apple.get_class_apple)
Nach dem Login kopieren

Das Ausgabeergebnis ist das gleiche, wenn eine Instanz verwendet und als Klasse aufgerufen wird.

<bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>> <bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage