Python 以arg形式传递函数时发生NameError
我有一个python函数test(),它循环回答问题并提示答案,最后对结果打分。我想传入对test()函数的不同但可选的修改,如shuffle()问题或reverse()问题,或doffics_only()等。当我尝试这样传入这些函数到test()时,我会得到一个nameError。有谁能帮我理解我哪里出错了吗Python 以arg形式传递函数时发生NameError,python,function,arguments,nameerror,Python,Function,Arguments,Nameerror,我有一个python函数test(),它循环回答问题并提示答案,最后对结果打分。我想传入对test()函数的不同但可选的修改,如shuffle()问题或reverse()问题,或doffics_only()等。当我尝试这样传入这些函数到test()时,我会得到一个nameError。有谁能帮我理解我哪里出错了吗 >>> my.test(mod=shuffle) ... NameError: name 'shuffle' is not defined def test(sel
>>> 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
如果test和shuffle都是同一类上的方法,那么调用应该是:
my.test(mod=my.shuffle)
如果test和shuffle都是同一类上的方法,那么调用应该是:
my.test(mod=my.shuffle)
什么是我的?
test
和shuffle
是一个类的一部分吗?是的,它们都是一个类的一部分,在这种情况下my只是该类的一个对象什么是my
?test
和shuffle
是一个类的一部分吗?是的,它们都是一个类的一部分,在这种情况下,my只是该类的一个对象如果我想要测试(mod=shuffle),我会在类外使用shuffle()并将其放在say main()中吗或者可以在test函数中定义可用的mod吗?您可以传入一个字符串,然后使用getattr()
在self
上获取该名称的方法。如果我想要测试(mod=shuffle),我会将shuffle()带到类外,并将其放在say main()中吗或者可以在测试函数中定义可用的MOD吗?您可以传入一个字符串,然后使用getattr()
在self
上获取该名称的方法。