【问题标题】:Instantiate classes in python from list of strings从字符串列表实例化python中的类
【发布时间】:2015-11-23 23:12:48
【问题描述】:

我在 stackoverflow 上找到了似乎可以解决我的问题的答案,但我找不到我能够开始工作的东西。我有一个非常大的字符串列表,如下所示:

db = ['a','b','c']

我想为每个字符串实例化一个类,其中唯一的字符串将是变量名:

a = MyClass()
b = MyClass()
c = MyClass()

我想将字符串转换为变量,但从我在 SO 上找到的一些答案来看,这似乎并不可取。

最好的方法是什么?

【问题讨论】:

  • 使用dictionary ?
  • 只需使用一个以字符串为键、类实例为值的字典。这就是 Python 命名空间的工作原理。
  • @letsc 我在很多帖子中都读过这个,但我不知道该怎么做。这些值是否都应该是具有相同变量名的类的实例化?像这样:{'a':x, 'b':x, 'c':x}
  • 你想要像instances = dict((k, MyClass()) for k in db) 这样的东西。或听写理解,如果您至少使用 2.7:instances = {k: MyClass() for k in db}.

标签: python


【解决方案1】:

我不推荐这个

您可以将名称添加到全局变量中

names = ['a', 'b', 'c']
globals().update({name: MyClass() for name in names})
print(a)

或本地字典:

def myfunc():
    names = ['a', 'b', 'c']
    locals().update({name: MyClass() for name in names})
    print(a)

使用字典

最好只使用字典来存储您的MyClass-instances:

names = ['a', 'b', 'c']
data = {k: MyClass() for k in names}
print(data['a'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2012-12-23
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多