Python: How to make Objekt-Attribut finden Sie eine Methode aufrufen
Ich würde gerne für ein Attribut nennen, wie object.x
zur Rücksendung der Ergebnisse der Methode, sagen object.other.other_method()
. Wie kann ich dies tun?
Edit: ich fragte ein bisschen schnell: es sieht aus wie kann ich dies tun mit
object.__dict__['x']=object.other.other_method()
Ist dies ein OK Weg, dies zu tun?
- Re: edit — ja und Nein... deine Lösung speichert die Ergebnisse
object.other.other_method()
imobject.x
, was bedeutet, dass die Methode nur einmal aufgerufen werden, nicht jedes malobject.x
gelesen. Wenn Sie möchten, dass die Methode aufgerufen werden, jedes mal, @muksie hat Sie Recht — schauen Sie sich dieproperty
Dekorateur.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die Eigenschaft decorator
Mucking mit der __dict__ ist schmutzig, vor allem, wenn @property vorhanden ist.
Haben Sie einen Blick auf die eingebaute Eigenschaft Funktion.
Verwenden
property
http://docs.python.org/library/functions.html#property
Diese nur rufen
other_method
einmal, wenn es erstellt wirdStatt Sie könnten dies tun
Fordert
other_method
jedesmal, wennobject.x
zugegriffen wirdNatürlich sind Sie nicht wirklich mit
object
als variable Namen, sind Sie?object.x = property(object.other.other_method)
bekomme ich<property at 0x1941f02cf48>
beim Zugriff auf diex
Attribut, was sollte ich anders machen?