在Python中延迟评估/延迟评估

时间:2019-08-28 08:07:34

标签: python lazy-evaluation delayed-execution

我想延迟对类实例的成员函数的调用的评估,直到该实例实际存在为止。

最小工作示例:

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和生成器括号(),但是我似乎无法使这个简单的示例生效。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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

打印3