从课程中选择一个随机方法

Bál*_*vay 2 python random class list

我有一个带有某些功能的类,如下所示:

class valami:

    def a():
        *some code...*
    def b():
        *some code...*
    def c():
        *some code...*
Run Code Online (Sandbox Code Playgroud)

我想从valamicalss中选择一个随机函数。我已经尝试过了:

random.choice((valami.a(), valami.b(), valami.c()))
Run Code Online (Sandbox Code Playgroud)

但是它同时调用了所有功能。

U10*_*ard 5

不要立即调用它们,仅调用代码随机选择的函数:

random.choice((valami.a, valami.b, valami.c))()
Run Code Online (Sandbox Code Playgroud)

如果您不想调用它,只需删除最后一对括号,使其成为:

random.choice((valami.a, valami.b, valami.c))
Run Code Online (Sandbox Code Playgroud)


Jab*_*Jab 5

您也可以operator.methodcallerrandom.choice

methodcaller(choice(('a', 'b', 'c'))(valami)
Run Code Online (Sandbox Code Playgroud)

要延迟拨打电话,请methodcaller事先进行。

method = methodcaller(choice(('a', 'b', 'c'))
Run Code Online (Sandbox Code Playgroud)

您甚至可以从其他地方获取方法名称:

methods = 'a', 'b', 'c'
method = methodcaller(choice(methods))
Run Code Online (Sandbox Code Playgroud)

然后只需在类/实例上调用方法:

method(valami)
Run Code Online (Sandbox Code Playgroud)