有没有办法选择在python中使用的随机构造函数?

时间:2016-01-29 23:55:33

标签: python-2.7 class constructor

有没有办法选择我的构造函数中随机使用?我有一个非常深入的代码,但下面写了一个愚蠢的代码,只是为了让它尽可能简单。

class Engine(object):

    def __init__(self, scenario, fart, shart):
        self.scenario = scenario
        self.fart = fart
        self.shart = shart   
        self.outcomes = [fart,shart]

    def giveScenario(self):
        print self.scenario

    def chooseOutcome(self):

        outcome = random.choice(self.outcomes)
        print outcome

dinner = Engine('You are at dinner','You fart','You shart')
home = Engine('You are at home','You fart','You shart')

现在让我们说我打算做一个游戏,选择这两个构造函数中的随机一个(晚餐或家庭版)加载到这个坏男孩,有没有办法做到这一点?

编辑:要清楚,我知道如何选择一个随机的结果,我想知道如何让这个程序运行并选择只有晚餐或只有回家运行。

 [randomly chosen operator].chooseOutcome()

也会返回 "你正在吃晚饭" /"你在家"和给定的结果

1 个答案:

答案 0 :(得分:3)

除非我完全误解了你的要求,否则这很容易:

dinner = Engine('You are at dinner','You fart','You shart')
home = Engine('You are at home','You fart','You shart')
random.choice([dinner, home]).chooseOutcome()

或者,如果您只需要一次,并希望避免不必要的实例化:

Engine(
    random.choice(['You are at dinner', 'You are at home']),
    'You fart',
    'You shart',
).chooseOutcome()

如果您需要在相同的随机选择的引擎上调用多个操作,只需分别存储random.choice([dinner, home])Engine(random.choice(['You are at dinner', 'You are at home']), 'You fart','You shart')的结果。