我无意实际做这个;我只是想知道它是否可行。我怀疑它不是。
是否可以在Python中创建一个变量,该变量在每次访问时解析为函数调用的结果,但是不通过中间对象访问它?有了课,我可以这样做:
class A:
i = 0
@property
def data(self):
self.i += 1
return self.i
>>> a = A()
>>> a.data
1
>>> a.data
2
但是有一些(但是很黑的)方法可以消除这个课程吗?即:
i = 0
def func():
global i
i += 1
return i
>>> data = some_magic_here(func)
>>> data
1
>>> data
2
答案 0 :(得分:0)
简短回答:不。
普通变量永远不会像Python中的函数那样。 可能有一些“神奇/棘手”的方法(通过绕过正常的限制),但这将被称为“猴子修补” - 有些东西在Python社区中没有被看到。