python - 使用变量作为名称实例化一个类

标签 python variables for-loop instantiation

我对 Python 有点陌生,希望有人能够帮助我解决我遇到的问题。

我需要使用列表中的变量实例化多个对象。假设我有一个包含 2 个项目的列表,[“apple”,“orange”],我想使用它们作为基于 Fruit 类的实例化类的名称,这样我最终得到 2 个对象,apple 和 Orange,它们是水果类。

我尝试这样做,但我似乎无法弄清楚如何使用变量名称作为实例化类的名称。此代码不起作用,但可能会让您了解我想要实现的目标:

class Fruit:
    pass

my_list = ["apple", "orange"]

for item in my_list:
    item = Fruit()

type(apple)

这不起作用,但我希望这能让您了解我想要实现的目标。我收到此错误:

NameError: name 'apple' is not defined

我希望看到的是:

>>> type(apple)
<type 'instance'>

任何人都可以提供的任何指示将不胜感激:)

谢谢!

最佳答案

动态创建变量通常不是一个好主意。只需使用字典即可​​:

>>> fruits = {}
>>> for item in my_list:
...    fruits[item] = Fruit()
... 

>>> [(k, type(v)) for k, v in fruits.items()]
[('orange', <class '__main__.Fruit'>), ('apple', <class '__main__.Fruit'>)]

我想你可以通过使用 globals() 在全局范围内做类似的事情,但我认为这是非常糟糕的做法。

关于python - 使用变量作为名称实例化一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23011197/

相关文章:

c# - C# 3.0 中 var 关键字的优势

java - 数组的值发生变化而没有任何命令影响它

c++ - char *argv[ ] 和 int argc C++ 的全局范围

java - 制作一个方法将不同的方法分别放在一个for循环中?

python - 无法将 iPython 设置为使用 2.6.1 Python

python - 从 python 脚本运行交互模式

python - 在 Python 3 中提供目录

python - 如何使用 Python io 模块构建内存驻留数据结构?

bash 函数从 sed 传递空格和行分隔的参数

swift - 在 for 循环中处理负索引的优雅 Swift 方法