2017-10-12 28 views
0

我有一个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 
+0

什么是'my'? “测试”和“洗牌”是班级的一部分吗? – kindall

+0

是的,他们都是班级的一部分,我在这种情况下只是该班的一个对象 – GainesvilleJesus

回答

2

如果测试和洗牌在同一类的方法,那么调用应该是:

my.test(mod=my.shuffle) 
+0

谢谢,它现在更有意义! – GainesvilleJesus

+0

如果我想测试(mod = shuffle),我会在课堂外把shuffle()放在main()中,还是可以在测试函数中定义可用的mod? – GainesvilleJesus

+0

您可以传入一个字符串,然后使用'getattr()'在'self'上获取该名称的方法。 – kindall

相关问题