在 Python 中延迟评估/惰性评估
Delay an evaluation / lazy evaluation in Python
我想延迟对 class 实例的成员函数的调用的评估,直到该实例实际存在。
最小工作示例:
class TestClass:
def __init__(self, variable_0):
self.__variable_0 = variable_0
def get_variable_0(self):
return self.__variable_0
delayed_evaluation_0 = test_class.get_variable_0() # What should I change here to delay the evaluation?
test_class = TestClass(3)
print(delayed_evaluation_0.__next__) # Here, 'delayed_evaluation_0' should be evaluated for the first time.
我尝试使用 lambda
、yield
和生成器括号 ()
,但我似乎无法让这个简单的示例起作用。
如何解决这个问题?
一个简单的lambda
就可以了。调用时,该函数将从当前作用域中获取 test_class
变量,如果找到它,它将起作用,如下所示:
delayed_evaluation_0 = lambda : test_class.get_variable_0()
test_class = TestClass(3)
print(delayed_evaluation_0())
打印3
我想延迟对 class 实例的成员函数的调用的评估,直到该实例实际存在。
最小工作示例:
class TestClass:
def __init__(self, variable_0):
self.__variable_0 = variable_0
def get_variable_0(self):
return self.__variable_0
delayed_evaluation_0 = test_class.get_variable_0() # What should I change here to delay the evaluation?
test_class = TestClass(3)
print(delayed_evaluation_0.__next__) # Here, 'delayed_evaluation_0' should be evaluated for the first time.
我尝试使用 lambda
、yield
和生成器括号 ()
,但我似乎无法让这个简单的示例起作用。
如何解决这个问题?
一个简单的lambda
就可以了。调用时,该函数将从当前作用域中获取 test_class
变量,如果找到它,它将起作用,如下所示:
delayed_evaluation_0 = lambda : test_class.get_variable_0()
test_class = TestClass(3)
print(delayed_evaluation_0())
打印3