将函数作为参数传递时的NameError
我有一个python函数test(),它循环遍历问题并提示答案并在最后对结果进行评分。我想通过不同的,但可选的修改测试()函数,如shuffle()的问题或reverse()的问题,或odds_only()等。当我尝试将这些函数传递到test()像这样,我得到一个nameError。任何人都可以帮助我了解我出错的地方吗?将函数作为参数传递时的NameError
>>> my.test(mod=shuffle)
... NameError: name 'shuffle' is not defined
def test(self, mod=None):
if mod is not None:
return_value = mod()
def shuffle(self):
list_of_questions = list(self.dictionary.keys())
random.shuffle(list_of_questions)
return list_of_questions
如果测试和洗牌在同一类的方法,那么调用应该是:
my.test(mod=my.shuffle)
谢谢,它现在更有意义! – GainesvilleJesus
如果我想测试(mod = shuffle),我会在课堂外把shuffle()放在main()中,还是可以在测试函数中定义可用的mod? – GainesvilleJesus
您可以传入一个字符串,然后使用'getattr()'在'self'上获取该名称的方法。 – kindall
什么是'my'? “测试”和“洗牌”是班级的一部分吗? – kindall
是的,他们都是班级的一部分,我在这种情况下只是该班的一个对象 – GainesvilleJesus