【问题标题】:How to create class instances from a list?如何从列表中创建类实例?
【发布时间】:2017-12-18 23:09:51
【问题描述】:

我是这个网站的新手,也是编码新手,所以请原谅我。

我一直在练习编码,想知道是否有人可以提供帮助。

假设我有一个class exampleClass

而不是做:

x = exampleClass()
y = exampleClass()
z = exampleClass()

我可以指定吗:

list = ['x','y','z']

然后创建类实例?

我已经搜索并尝试了几个示例代码,但无法做到。

【问题讨论】:

标签: python list class object instance


【解决方案1】:

没有按名称创建变量的简洁方法。另一种选择可能是使用列表推导式创建具有给定数量的 exampleClass 实例的列表:

[exampleClass() for _ in range(3)]

然后可以将其解包到变量中:

x, y, z = [exampleClass() for _ in range(3)]

【讨论】:

  • 啊,我忘了迭代解包。这可能是更好的方法。 +1
  • 如何缩放这个变量,比如 20 个变量?
  • @Icee:将3 转换为20 并解压缩到更多变量。不过,拥有 20 个相同类型的变量表明您可能希望使用其他方法。也许是一个列表?
【解决方案2】:

您可以使用字典推导将类实例映射到特定值:

>>> class Example:
    def __repr__(self):
        return 'ExampleObject'


>>> {k: Example() for k in ('x', 'y', 'z')}
{'z': ExampleObject, 'y': ExampleObject, 'x': ExampleObject}

尽管可能,但您通常希望避免动态创建变量名称,而是使用容器(如列表)——如果您需要通过索引访问值或字典——如果您需要通过特定名称访问值.

【讨论】:

    猜你喜欢
    • 2020-06-28
    • 2017-12-12
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2012-02-26
    • 2023-03-29
    相关资源
    最近更新 更多