Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen Python-Klassenmethoden und gewöhnlichen Methoden

Der Unterschied zwischen Python-Klassenmethoden und gewöhnlichen Methoden

藏色散人
藏色散人Original
2019-07-03 09:45:033793Durchsuche

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)

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 &#39;__main__.Apple&#39;>,3
apple: <class &#39;__main__.Apple&#39;>,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 &#39;__main__.Apple&#39;>> <bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>>

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!

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