Aufrufen von Funktionen innerhalb von Klassen: Ein praktischer Ansatz
In der objektorientierten Programmierung kapseln Klassen Daten und Funktionen und organisieren sie in logischen Einheiten. Wenn Sie Operationen an diesen Objekten ausführen müssen, können Sie Mitgliedsfunktionen innerhalb der Klasse definieren. Es ist jedoch nicht immer klar, wie eine Funktion innerhalb einer anderen aufgerufen wird, wenn beide in derselben Klasse definiert sind.
Das Problem:
Betrachten Sie den folgenden Code, der berechnet Abstände zwischen Koordinaten:
class Coordinates: def distToPoint(self, p): # Calculate distance using Pythagoras' theorem def isNear(self, p): # How do we call distToPoint from isNear?
In diesem Beispiel möchten wir mithilfe der distToPoint-Funktion ermitteln, ob ein Punkt in der Nähe eines anderen Punkts liegt. Wie rufen wir diese Funktion innerhalb der isNear-Funktion auf?
Die Lösung:
Um eine Mitgliedsfunktion innerhalb derselben Klasse aufzurufen, müssen wir die Instanz von verwenden Klasse (konventionell als self bezeichnet), um auf ihre Methoden zuzugreifen. Die korrigierte isNear-Funktion würde so aussehen:
class Coordinates: def distToPoint(self, p): # Calculate distance using Pythagoras' theorem def isNear(self, p): self.distToPoint(p) # Continue with other operations
Indem wir self vor distToPoint hinzufügen, geben wir explizit an, dass wir die Mitgliedsfunktion distToPoint für die Instanz self der Coordinates-Klasse aufrufen möchten.
Beispielverwendung:
Um diesen Code zu verwenden, würden Sie eine Instanz der Koordinaten erstellen Klasse und rufen Sie dann die Funktion isNear für diese Instanz auf:
coordinates = Coordinates() coordinates.isNear(another_point)
Dadurch wird der Abstand zwischen den Koordinaten der Instanz und dem angegebenen another_point mithilfe der Funktion distToPoint berechnet.
Das obige ist der detaillierte Inhalt vonWie rufe ich eine Klassenfunktion von einer anderen innerhalb derselben Klasse in Python auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!