Python中实例的变量命名

时间:2015-08-17 06:25:40

标签: python class dynamic instance naming

我想做以下事情:

f = SomeClass()
something(f.name) = deepcopy(f)

所以当f.name ==' ABC'我有一个名为ABC的SomeClass()实例。

我需要什么?我想循环一个列表,列表的每个元素都应该是SomeClass()的一个实例,但具有在实例化过程中生成的特定名称。

2 个答案:

答案 0 :(得分:0)

您需要一个存储keyvalue对的字典,密钥可以是名称,值可以直接作为实例。您还需要注意字典中的keys是唯一的,因此如果您尝试为字典中已存在的键设置值,它将覆盖以前的值。

示例 -

>>> class CA:
...     def __init__(self, name):
...             self.name = name
...
>>> classdict = {}
>>> classdict['abcd'] = CA('abcd')
>>> classdict['bcde'] = CA('bcde')
>>> classdict
{'abcd': <__main__.CA object at 0x02265150>, 'bcde': <__main__.CA object at 0x02265250>}
>>> for key in classdict:
...     print(classdict[key].name)
...
abcd
bcde

答案 1 :(得分:-1)

您可以通过修改locals()globals()返回的范围词典来完成此操作:

from copy import deepcopy

class SomeClass:
    def __init__(self, name):
        self.name = name

f = SomeClass('ABC')

locals()[f.name] = deepcopy(f)

print(ABC)

我必须注意,但在大多数情况下这是不好的做法。