【问题标题】:Creating objects from a class with unique names in Python3 [duplicate]在Python3中从具有唯一名称的类创建对象[重复]
【发布时间】:2015-07-07 04:47:40
【问题描述】:

我有一个 Enemy 类,所以我的第一个对象是:

enemy1 = Enemy()

现在我需要用这样的名字树很多敌人:

enemy1 = Enemy()
enemy2 = Enemy()
enemy3 = Enemy()
enemy4 = Enemy()

我怎样才能制作一个基本上可以做到这一点的循环:

for i in range(1, 5)
    enemy + i = Enemy()

最简单的方法是什么?

【问题讨论】:

    标签: python loops python-3.x for-loop


    【解决方案1】:

    您可以使用globals() 函数获取全局名称空间的字典,然后使用字符串创建您的变量。

    例子-

    In [19]: class Enemy:
       ....:        pass
       ....:
    
    In [20]: gbl = globals()
    
    In [21]: for i in range(1,6):
       ....:     gbl['enemy' + str(i)] = Enemy()
       ....:
    
    In [22]: enemy1
    Out[22]: <__main__.Enemy at 0x4903a58>
    
    In [23]: enemy2
    Out[23]: <__main__.Enemy at 0x4903a90>
    
    In [24]: enemy3
    Out[24]: <__main__.Enemy at 0x4903b00>
    
    In [25]: enemy4
    Out[25]: <__main__.Enemy at 0x4903b70>
    
    In [26]: enemy5
    Out[26]: <__main__.Enemy at 0x4903be0>
    

    【讨论】:

    • 漂亮的答案,但有没有其他方法可以做到这一点
    • 你也可以做exec,例如-exec('enemy' + str(7) + ' = Enemy()')。但这很危险,你应该避免它,最好使用globals
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2016-04-14
    • 1970-01-01
    相关资源
    最近更新 更多