是否可以自定义对嵌套对象属性的响应?
It is possible to customize the response to nested object attributes?
我想弄清楚是否有办法 return 嵌套对象的一个属性,当属性使用 'dot' 表示法寻址时,但 return 不同请求后续属性时该对象的属性。
例如)
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)
有什么办法可以做到吗?我想,如果有的话,它涉及定义 MyOuterClass 的 __getattr__
方法,但我一直在四处搜索,但我还没有找到任何方法来做到这一点。这是不可能的吗?做不成也没什么,但是我想做很多次了,就是想知道有没有办法。
现在看来很明显,但继承才是答案。将属性定义为自定义 class 的实例,它继承自我想要用于普通属性访问的数据类型(即 object.attr
),并为该子 class 提供后续属性请求所需的属性(即 object.attr.subattr
).
我想弄清楚是否有办法 return 嵌套对象的一个属性,当属性使用 'dot' 表示法寻址时,但 return 不同请求后续属性时该对象的属性。 例如)
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)
有什么办法可以做到吗?我想,如果有的话,它涉及定义 MyOuterClass 的 __getattr__
方法,但我一直在四处搜索,但我还没有找到任何方法来做到这一点。这是不可能的吗?做不成也没什么,但是我想做很多次了,就是想知道有没有办法。
现在看来很明显,但继承才是答案。将属性定义为自定义 class 的实例,它继承自我想要用于普通属性访问的数据类型(即 object.attr
),并为该子 class 提供后续属性请求所需的属性(即 object.attr.subattr
).