Der Unterschied zwischen Python-Klassenmethoden und Instanzmethoden

(*-*)浩
Freigeben: 2019-07-09 10:23:41
Original
6820 Leute haben es durchsucht

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.

Der Unterschied zwischen Python-Klassenmethoden und Instanzmethoden

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.

Klassenmethode

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

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!

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