问题描述
def create_trigger(trig_type,arg1,arg2=None):
"""
Assumes:
trig_type: str which is either TITLE,DESCRIPTION,AFTER,BEFORE,NOT,AND,OR
Returns:
correspoding trigger object
"""
if trig_type == 'TITLE':
print('>>entering',trig_type,'trigger')
return TitleTrigger(arg1)
elif trig_type == 'DESCRIPTION':
print('>>entering','trigger')
return DescriptionTrigger(arg1)
elif trig_type == 'AFTER':
print('>>entering','trigger')
return AfterTrigger(arg1)
elif trig_type == 'BEFORE':
print('>>entering','trigger')
return BeforeTrigger(arg1)
elif trig_type == 'NOT':
print('>>entering','trigger')
return Nottrigger(arg1)
elif trig_type == 'AND':
print('>>entering','trigger')
return AndTrigger(arg1,arg2)
elif trig_type == 'OR':
print('>>entering','trigger')
return OrTrigger(arg1,arg2)
其中当 trig_type='TITLE'
时 ==
运算符返回 False
,当我使用 str.__eq__()
时也是如此。但是当我使用 trig_type in 'TITLE'
时它返回 True
。
是什么导致了这种行为?这种情况下的最佳做法是什么
编辑:
下面是一个最小的可重现示例
def read_trigger_config():
"""
filename: the name of a trigger configuration file
Returns: a list of trigger objects specified by the trigger configuration
file.
"""
class TitleTrigger(object):
"""
mock class of TittleTrigger
"""
def __init__(self,phrase):
self.__phrase = phrase
def create_trigger(trig_type,OR
Returns:
correspoding trigger object
"""
print('checking if','== TITLE',trig_type == 'TITLE')
if trig_type == 'TITLE':
return TitleTrigger(arg1)
lines = [['t1','TITLE','election']]
triggers_dict = {}
print(lines)
for line in lines:
if line[0] != 'ADD':
if not line[1] in ('NOT','AND','OR'):
triggers_dict[line[0]] = create_trigger(line[1],line[2])
else:
triggers_dict[line[0]]=create_trigger(line[1],triggers_dict[line[2]],triggers_dict[line[3]])
print(triggers_dict)
read_trigger_config()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)