【问题标题】:Selecting random class in Python在 Python 中选择随机类
【发布时间】:2014-02-06 18:24:42
【问题描述】:

假设你有 Dog、Cat、Pig 等类都继承自 Animal,那么随机初始化一个类的最佳方法是什么?

即一个基本的方法是有一个元组,从中选择一个项目,然后创建一个选定值的实例。

animals = ('dog', 'cat', 'pig'...)
choice = random.choice(animals)

if choice == 'dog':
    new_animal = Dog()
elif choice == 'cat':
    new_animal = Cat()
...

但显然这是非常低效的,如何最好地实现这种行为?

在相关说明中,如果您要求用户输入(标准输入、文本文件等)他们想要的动物,那么您将如何实例化正确的动物?再一次,一个丑陋的方法就是上面的一个很大的 if, elif 语句。

【问题讨论】:

    标签: python class oop


    【解决方案1】:

    不是存储类名字符串,而是存储实际的类本身,像这样

    animals = (Dog, Cat, Pig)
    the_chosen_one = random.choice(animals)
    new_animal = the_chosen_one()
    

    【讨论】:

    • 太棒了,不知道你可以使用这样的类。干杯。
    【解决方案2】:

    要处理用户输入,只需将您的类存储在字典中:

    animals = {'dog': Dog, 'cat': Cat, 'pig': Pig}
    

    然后,您将能够选择正确的类并创建一个实例:

    animal = animals[user_input]()
    

    如果您需要能够随机选择动物或从用户选择中选择动物,您可以将此技术与random.choice one 结合起来:

    animal = random.choice(animals.values())()
    

    【讨论】:

    • 再次,不知道您可以在列表/字典中使用类。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2014-04-23
    • 2019-05-05
    • 2013-03-28
    • 2012-02-21
    • 1970-01-01
    相关资源
    最近更新 更多