2017-06-11 2 views
0

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, ein Attribut eines verschachtelten Objekts zurückzugeben, wenn das Attribut mit der Punktnotation adressiert wird, aber verschiedene Attribute dieses Objekts zurückzugeben, wenn nachfolgende Attribute angefordert werden. ex)Es ist möglich, die Antwort auf verschachtelte Objektattribute anzupassen?

class MyAttributeClass: 
    def __init__(self, value): 
     self.value = value 
     from datetime.datetime import now 
     self.timestamp = now() 

class MyOuterClass: 
    def __init__(self, value): 
     self._value = MyAttributeClass(value) 

test = MyOuterClass(5) 


test.value (should return test._value.value) 
test.value.timestamp (should return test._value.timestamp) 

Gibt es eine Möglichkeit, dies zu erreichen? Ich stelle mir vor, wenn es einen gibt, es beinhaltet die Definition der __getattr__ Methode von MyOuterClass, aber ich habe herum gesucht und ich habe keine Möglichkeit gefunden, dies zu tun. Ist es einfach unmöglich? Es ist keine große Sache, wenn es nicht möglich ist, aber ich wollte das schon oft machen und ich würde gerne wissen, ob es einen Weg gibt.

Antwort

0

Es scheint jetzt offensichtlich, aber Vererbung war die Antwort. Definieren von Attributen als Instanzen einer benutzerdefinierten Klasse, die von dem Datentyp, den ich für einen gewöhnlichen Attributzugriff wollte, erbt (d. H. object.attr) und dieser Unterklasse die gewünschten Attribute für nachfolgende Attributanforderungen gibt (d. H. object.attr.subattr).

Verwandte Themen