从一个类中选择一种随机方法

3

I have a class with some functions, like this:

class valami:

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

最初的回答:我想从valami类中选择一个随机函数。我已经尝试过以下方法:

我想要从valami类中选择一个随机函数。我已经尝试过以下方法:

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

但它同时调用了所有的函数。最初的回答。

这是因为valami.a是实际函数的名称,并将该函数作为对象返回。valami.a()调用该函数并返回调用函数的结果 - Michael Kolber
3个回答

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)

5

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

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

如果你还不想调用它,只需删除末尾的一对括号,将其变为:
random.choice((valami.a, valami.b, valami.c))

2
你需要先选择函数,然后调用所选的函数。"Original Answer"翻译成"最初的回答"。
random.choice((valami.a, valami.b, valami.c))()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接