Python 以arg形式传递函数时发生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

我有一个python函数test(),它循环回答问题并提示答案,最后对结果打分。我想传入对test()函数的不同但可选的修改,如shuffle()问题或reverse()问题,或doffics_only()等。当我尝试这样传入这些函数到test()时,我会得到一个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

如果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
上获取该名称的方法。