„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Instanz- und Klassenmethoden in Python: Wann sollten Sie „self“ und „cls“ verwenden?

Instanz- und Klassenmethoden in Python: Wann sollten Sie „self“ und „cls“ verwenden?

Veröffentlicht am 09.11.2024
Durchsuche:186

  Instance vs. Class Methods in Python: When Should You Use \

Eintauchen in die Nuancen von Klassen- und Instanzmethoden: Beyond Self vs. Cls

Der Python Enhancement Proposal (PEP) 8 schlägt die Verwendung vor von „self“ als erstes Argument in Instanzmethoden und „cls“ als erstes Argument in Klassenmethoden. Diese Unterscheidung ergibt sich aus den unterschiedlichen Rollen, die diese Methoden bei der Arbeit mit Instanzen und Klassen spielen.

Instanzmethoden: Der Selbstvorteil

Instanzmethoden werden auf Instanzen von a aufgerufen Klasse. Sie interagieren typischerweise mit bestimmten Attributen und Verhaltensweisen dieser bestimmten Instanz. Der erste Parameter dieser Methoden ist self, der die Instanz darstellt, auf der die Methode aufgerufen wird.

Zum Beispiel definiert die folgende Klasse eine „Introduce“-Instanzmethode:

class Inst:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print("Hello, I am %s, and my name is %s" % (self, self.name))

Wenn wir eine Instanz der Inst-Klasse erstellen und ihre „introduce“-Methode aufrufen, wird die Die Instanz selbst wird als Selbstparameter übergeben, sodass wir auf ihre Attribute zugreifen können (in diesem Fall das Attribut „Name“).

Klassenmethoden: Umfassend Cls

Klassenmethoden hingegen operieren auf der Klasse selbst und nicht auf einzelnen Instanzen. Sie ermöglichen es uns, die Klassenstruktur oder das Klassenverhalten zu ändern oder zu überprüfen. Der erste Parameter dieser Methoden ist cls, der die Klasse darstellt, für die die Methode aufgerufen wird.

Das folgende Beispiel veranschaulicht eine Klassenmethode:

class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)

Diese Methode erfordert keine Instanz, da sie nicht mit bestimmten Objektattributen interagiert. Stattdessen operiert es auf der Klasse selbst und stellt Informationen über ihre Struktur bereit.

Klassenmethoden sind besonders nützlich, wenn von einer übergeordneten Klasse geerbt wird, da sie es der untergeordneten Klasse ermöglichen, das Verhalten der übergeordneten Klasse zu ändern oder zu erweitern. Beispielsweise überschreibt die folgende Unterklasse die „introduce“-Methode der Cls-Klasse:

class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am 

Durch die Verwendung von „cls“ als erstem Parameter kann die Methode „introduce“ direkt für die Unterklasse aufgerufen werden, sodass diese ihr eigenes Verhalten definieren kann Greift weiterhin auf geerbte Eigenschaften der übergeordneten Klasse zu.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3