2017-06-11 9 views
0

私は、属性が 'ドット'表記を使用してアドレス指定されているが、後続の属性が要求されたときにそのオブジェクトの異なる属性を返すためにネストされたオブジェクトの1つの属性を返す方法があるかどうかを調べようとしています。 ex)ネストされたオブジェクト属性に対するレスポンスをカスタマイズすることは可能ですか?

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) 

これを行う方法はありますか?私が想像しているのは、ある場合は、__getattr__のMyOuterClassメソッドを定義することですが、私は検索してきましたが、これを行う方法が見つかりませんでした。それは単なる不可能なのだろうか?それができないのであれば大したことではありませんが、私はこれを何度もやりたいと思っており、方法があるかどうかを知りたいのです。

答えて

0

今は明らかですが、継承が答えです。属性を通常の属性アクセス(すなわちobject.attr)に必要なデータ型から継承し、このサブクラスに後続の属性要求(つまりobject.attr.subattr)の望ましい属性を与えるカスタムクラスのインスタンスとして定義します。