Funktionen in Klassen anrufen: Ein praktischer Ansatz
In objektorientierten Programmierung verkapulieren Klassen Daten und Funktionalität, organisieren sie in logische Entitäten. Wenn Sie Operationen für diese Objekte ausführen müssen, können Sie Mitgliederfunktionen innerhalb der Klasse definieren. Es ist jedoch nicht immer klar, wie man eine Funktion innerhalb einer anderen aufruft, wenn beide in derselben Klasse definiert sind.
Das Problem:
Betrachten Sie den folgenden Code, der Entfernungen zwischen Koordinaten berechnet:
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 feststellen, ob ein Punkt in der Nähe eines anderen Punkts mit der Disttopoint -Funktion liegt. Wie rufen wir diese Funktion in der ISNear -Funktion auf?
Die Lösung:
, um eine Mitgliedsfunktion innerhalb derselben Klasse aufzurufen, müssen wir die Instanz der Klasse verwenden (als Selbst nach Konvention 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
durch Hinzufügen von Selbst vor DisttOpoint, wir zeigen ausdrücklich an, dass wir die Mitgliedsfunktion in der Instanz -Selbst der Koordinatenklasse anrufen möchten. Instanz:
koordinaten = koordinaten () koordinaten.isNear (other_point) Dies berechnet die Entfernung zwischen den Koordinaten der Instanz und dem angegebenen anderen_point unter Verwendung der Disttopoint -Funktion.
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