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

时间:2019-07-15 04:14:25

标签: python list class random

我有一个带有某些功能的类,像这样:

class valami:

    def a():
        *some code...*
    def b():
        *some code...*
    def c():
        *some code...*

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

random.choice((valami.a(), valami.b(), valami.c()))

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

3 个答案:

答案 0 :(得分:5)

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

random.choice((valami.a, valami.b, valami.c))()

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

random.choice((valami.a, valami.b, valami.c))

答案 1 :(得分:5)

您还可以将operator.methodcallerrandom.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))()