Heim  >  Artikel  >  Backend-Entwicklung  >  Instanz- und Klassenmethoden in Python: Wann sollten Sie „self“ und „cls“ verwenden?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 03:01:28278Durchsuche

  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:

<code class="python">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))</code>

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

Klassenmethoden: Cls umfassen

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:

<code class="python">class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)</code>

Diese Methode erfordert keine eine 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 sie von einer übergeordneten Klasse erben, 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:

<code class="python">class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am <class 'SubCls'></code>

Durch die Verwendung von „cls“ als erstem Parameter kann die „introduce“-Methode direkt in der Unterklasse aufgerufen werden Es ermöglicht, sein eigenes Verhalten zu definieren und gleichzeitig auf geerbte Eigenschaften der übergeordneten Klasse zuzugreifen.

Das obige ist der detaillierte Inhalt vonInstanz- und Klassenmethoden in Python: Wann sollten Sie „self“ und „cls“ verwenden?. 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