Heim > Artikel > Backend-Entwicklung > Der Unterschied zwischen Python-Klassenmethoden und Instanzmethoden
Die gebräuchlichsten Methodentypen in Python sind Instanzmethoden und Klassenmethoden. Wie werden sie definiert? Wie nennt man es? Was sind ihre Unterschiede und Funktionen? Siehe unten.
Zunächst werden diese Methoden in der Klasse definiert. Lassen Sie mich zunächst kurz darüber sprechen, wie man es definiert und nennt. (PS: Instanzobjekte haben die größten Berechtigungen.)
Instanzmethode (Empfohlenes Lernen: Python-Video-Tutorial)
Definition: erster Parameter It Es wird allgemein vereinbart, dass der Parametername „self“ ist, über den die Attribute und Methoden der Instanz übergeben werden (die Attribute und Methoden der Klasse können auch übergeben werden). : kann nur vom Instanzobjekt aufgerufen werden.
KlassenmethodeDefinition: Verwenden Sie den Dekorator @classmethod. Der erste Parameter muss das aktuelle Klassenobjekt sein, über das die Attribute und Methoden der Klasse übergeben werden (
Aufruf: Instanzobjekt und Klassenobjekte können aufgerufen werden.Instanzmethoden
Kurz gesagt sind Instanzmethoden Methoden, die von Instanzen einer Klasse verwendet werden können. Hier gibt es nicht viele Erklärungen.
Klassenmethode
Verwenden Sie den Dekorator @classmethod.
Im Prinzip sind Klassenmethoden Methoden, die auf der Klasse selbst als Objekt operieren. Angenommen, es gibt eine Methode und es ist logisch sinnvoller, diese Methode unter Verwendung der Klasse selbst als Objekt aufzurufen, dann kann diese Methode als Klassenmethode definiert werden. Wenn eine Vererbung erforderlich ist, kann diese außerdem auch als Klassenmethode definiert werden. Angenommen, ich habe eine Schülerklasse und eine Klassenklasse: Führen Sie den Vorgang zum Erhöhen der Klassengröße aus und ermitteln Sie die Gesamtzahl der Klassenmitglieder >Schüler Die Klasse erbt von der Klasse class, die Anzahl der Schüler in der Klasse kann steigen
Abschließend möchte ich einige Schüler definieren und die Gesamtzahl ermitteln Schüler in der Klasse.
class ClassTest(object): __num = 0 @classmethod def addNum(cls): cls.__num += 1 @classmethod def getNum(cls): return cls.__num # 这里我用到魔术方法__new__,主要是为了在创建实例的时候调用累加方法。 def __new__(self): ClassTest.addNum() return super(ClassTest, self).__new__(self) class Student(ClassTest): def __init__(self): self.name = '' a = Student() b = Student() print(ClassTest.getNum())
Weitere technische Artikel zum Thema Python finden Sie in der Spalte
Python-Tutorial, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Python-Klassenmethoden und Instanzmethoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!