在 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.

我尝试使用 lambdayield 和生成器括号 (),但我似乎无法让这个简单的示例起作用。

如何解决这个问题?

一个简单的lambda就可以了。调用时,该函数将从当前作用域中获取 test_class 变量,如果找到它,它将起作用,如下所示:

delayed_evaluation_0 = lambda : test_class.get_variable_0()
test_class = TestClass(3)
print(delayed_evaluation_0())

打印3