我有一个带有某些功能的类,像这样:
class valami:
def a():
*some code...*
def b():
*some code...*
def c():
*some code...*
我想从valami
中选择一个随机函数。我已经尝试过了:
random.choice((valami.a(), valami.b(), valami.c()))
但是它同时调用了所有功能。
答案 0 :(得分:5)
不要立即调用它们,仅调用代码随机选择的函数:
random.choice((valami.a, valami.b, valami.c))()
如果您不想调用它,只需删除最后一对括号,使其成为:
random.choice((valami.a, valami.b, valami.c))
答案 1 :(得分:5)
您还可以将operator.methodcaller
与random.choice
一起使用
methodcaller(choice(('a', 'b', 'c'))(valami)
要延迟通话,只需预先设置methodcaller
。
method = methodcaller(choice(('a', 'b', 'c'))
您甚至可以从其他地方获取方法名称:
methods = 'a', 'b', 'c'
method = methodcaller(choice(methods))
然后只需在类/实例上调用方法:
method(valami)
答案 2 :(得分:2)
您需要先在功能之间进行选择,然后调用所选功能。
random.choice((valami.a, valami.b, valami.c))()