from en import verb
print verb.tenses()
print verb.infinitive('argue')
['infinitive', 'present participle', 'past plural', '2nd singular present', '2nd singular past', 'past', '3rd singular present', 'past participle', '1st singular present', '1st singular past', '3rd singular past', 'present plural']
argue
我找不到一个能给出动词所有时态的方法。调用每个函数只有一种方法:使用动词对象替换列表中的空格。我怎么能做到这一点?
输入:argue
。输出应为:arguing
,argued
,argue
..
答案 0 :(得分:1)
您可以为时态的每个名称创建名称/参数列表。例如:
tense_functions = {
'infinitive': ('infinitive', {}),
'present participle': ('present_participle', {}),
'1st singular present': ('present', {'person': 1}),
...
}
for tense in verb.tenses():
options = tense_functions[tense]
func = getattr(verb, options[0])
print(func('argue', **options[1]))
答案 1 :(得分:0)
您可以执行getattr(verb, 'infinitive')
,它将返回与verb.infinitive
完全相同的函数的引用。然后,您可以遍历这样的字符串列表:
some_tenses = ['infinitive', 'present_participle', 'past_plural',]
for tense in some_tenses:
print getattr(verb, tense)('argue')
当然,字符串必须是模块中的确切函数名称,无论它们是什么。
您可能还想查看hasattr()
。如果您尝试getattr()
,但您提供的属性对于该对象不存在,那么您将获得AttributeError。在尝试if hasattr(...
之前使用getattr(...
可以让您优雅地处理此类案例。或者,您可以使用try ... except块。