在我的代码中,我想创建一个“事件”类。初始化时,向事件传递一个触发条件。我希望能够灵活地将任何布尔表达式作为触发器传递。简单来说:
class event():
def __init__(self,condition,outcome):
self.condition = condition
self.outcome = outcome
def check(self):
if self.condition:
print(self.outcome)
当然,这并不完全正确,因为我的目的是让类计算传递的原始表达式,而不是在创建对象时计算它的真值。例如:
foo = 0
e = event(foo != 0,"foo has changed value")
e.check()
foo = 1
e.check()
理想的结果是check方法在第二次调用语句时打印语句
我愿意重新设计整个课堂的概念,但以这种方式设计事物的主要目的是,事件的可能结果集相当小,足以用几个课堂变量进行编码,触发条件在实例化时是已知的,但可能会有很大的变化,并且会合并一系列类中的对象
最后一点信息:在创建事件对象之前,将进入条件语句的所有变量都已实例化
您希望传递一个可调用的值,而不是实际的bool值,如下所示(为清晰起见添加了类型注释):
然后,您将通过传递一个callable来使用它,该callable在您调用它时返回bool;一种简单的内联方式是通过
lambda
:相关问题 更多 >
编程相关推荐