2016-11-19 11 views
0

Ich lerne Python. Angenommen, ich habe meine Klasse Dog und zwei Instanzen mit den Namen Fido und Molly. Ich möchte ein Attribut der zweiten Instanz ändern, indem ich den + Operator mit __add__ überlasten. Wenn ich Fido+Molly eintippe, wird das Molly.touched Attribut gesetzt. Wie erfolgt der Zugriff von einer Instanz auf die Attribute einer anderen Instanz in python?Zugriff auf Instanzvariable von einer Instanz zur anderen

Antwort

3

Ich denke, Sie sind daran interessiert, wie die __add__ spezielle Methode funktioniert. Im Wesentlichen funktioniert es als x.__add__(y), wobei x und y Instanzobjekte sein können. Sehen Sie ein Beispiel für die Implementierung here.

Sie müssten __add__() in Dog überladen, um etwas zurückzugeben, das das y.touched Attribut aktualisiert. Beispiel:

class Dog(object): 

    def __init__(self, touched): 
     self.touched = touched 

    def __add__(self, other): 
     other.touched = other.touched + self.touched 
     #return None         # optional, explicit 

fido = Dog(1) 
molly = Dog(2) 

fido + molly 
molly.touched 
# 3 
+1

'return None' ist überflüssig, übrigens. – TigerhawkT3

+1

Ja, aber es ist explizit für jemanden, der mit Python nicht vertraut ist. Ich werde einen Kommentar abgeben – pylang

Verwandte Themen