Klasse vs. Instanzmethoden
Pythons PEP 8-Styleguide empfiehlt die Verwendung von „self“ für die ersten Argumente der Instanzmethode und „cls“ für die Klasse Methode erste Argumente. Das Verständnis der Unterscheidung zwischen diesen beiden Arten von Methoden ist für eine effektive objektorientierte Programmierung von entscheidender Bedeutung.
Instanzmethoden sind bestimmten Instanzen einer Klasse zugeordnet. Sie verarbeiten die Daten der Instanz und erhalten typischerweise „self“ als erstes Argument. Beim Zugriff auf eine Instanzmethode wie beispielsweise object.method() wird die Instanz automatisch an die Methode übergeben.
Bedenken Sie beispielsweise die folgende Klassendefinition:
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print("Hello, my name is", self.name)
Hier ist „greet()“ eine Instanzmethode, die auf jeder Instanz der Klasse „Person“ mit „object.greet( )".
Klassenmethoden hingegen sind mit der Klasse selbst und nicht mit einzelnen Instanzen verknüpft. Als erstes Argument erhalten sie „cls“, das die Klasse repräsentiert. Klassenmethoden werden für Aufgaben verwendet, die sich auf die Klasse als Ganzes beziehen, beispielsweise das Erstellen neuer Instanzen oder den Zugriff auf Daten auf Klassenebene.
Der folgende Codeausschnitt veranschaulicht eine Klassenmethode:
class Math:
@classmethod
def sum(cls, a, b):
return a b
Die Methode „Math.sum()“ benötigt zwei Argumente, die addiert und zurückgegeben werden. Da es sich um eine Klassenmethode handelt, können Sie sie direkt als Math.sum(1, 2) aufrufen, um das Ergebnis zu erhalten.
Durch das Verständnis des Unterschieds zwischen Instanz- und Klassenmethoden können Entwickler die gesamten Funktionen des Objekts effektiv nutzen -orientierte Programmierung in Python.
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