虽然我不以任何方式推荐这一点 - 请参阅我对原始问题的评论 - 嵌套结构通常需要递归下降。您将编写一个函数来检查字典的 value() 列表中的每个值并执行以下三件事之一:
- 如果该值是可调用的,则调用它
- 如果值为字典,则进行递归调用
- 否则,跳过它。
实际上,与探索文件树没有太大不同。
然而,我不会为重复这一点而道歉,重要的是在这里检查您的实际问题并决定这是否真的是您想要做的事情。我看不出这是一个很好的解决方案。
编辑:根据OP的进一步信息,看起来@property装饰器可能是所需要的。使用示例:
>>> class Foo:
... @property
... def current_time(self):
... from datetime import datetime
... return datetime.now()
...
>>> f = Foo()
>>> f.current_time
datetime.datetime(2014, 12, 10, 15, 29, 35, 146096)
>>> f.current_time
datetime.datetime(2014, 12, 10, 15, 29, 42, 383874)
请注意,该语法评估current_time
name 就好像它是一个简单的值一样,但返回的值是调用函数的结果,导致评估时的值,我认为这就是您所追求的。
(但正如 @abarnert 观察到的,你将这些放入字典中,所以这对你不起作用)