我使用的是Python 2.7,我想写一个小型库,这是一种“事件系统”。基本上,我有字段对象(目前只有两个属性,但可能会在以后更改),以及包含字段的标准对象。
标准类传递一个包含字段对象的表达式,Criterion类是字段的观察者,这样只要其中一个包含的字段属性(例如值等)发生变化,它就会触发Criterion类重新评估自身检查表达式是否为真。
如果表达式的计算结果为true,则Criterion类会执行某些操作 - 现在可能会打印到屏幕上。
class Field(Object):
def __init__(self, id, name, value):
self.id = id
self.name = name
self.value = value
def set_value(newval):
self.value = newval
def __repr__(self):
print self.id, self.name, self.value
# A criterion is constructed with an expression containing field objects
# It 'listens' to changes in the field attributes and reevaluates itself and checks if expression is now true
# When the expression is true, it prints to the console
class Criterion(Object):
def __init__(self, express):
parse_expression(express) # parses expression to get field objects (is this necessary?)
self.fields = {} # dictionary of fields
# call back when one of the parsed and observed fields changes
def upon_field_change(field):
if eval_expression():
# do something
print "Criterion evaluated true upon field change: %s", field
pass
# evaluate expression with current field objects
# returns boolean
def eval_expression():
pass
# evaluates bolean True/False
def __nonzero__():
eval_expression()
上面的代码片段是我的头脑,我的问题是: