Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中实例的变量命名_Python_Class_Dynamic_Instance_Naming - Fatal编程技术网

Python中实例的变量命名

Python中实例的变量命名,python,class,dynamic,instance,naming,Python,Class,Dynamic,Instance,Naming,我想做以下事情: f = SomeClass() something(f.name) = deepcopy(f) 因此,当f.name=='ABC'时,我有一个名为ABC的类的实例 我需要它做什么?我想循环一个列表,列表中的每个元素都应该是SomeClass的一个实例,但是有一个在实例化过程中生成的特定名称 您需要一个字典,它存储key:value对,key可以是名称,value可以是实例。您还需要注意,字典中的键是唯一的,因此,如果您尝试为字典中已存在的键设置值,它将覆盖以前的值 范例- &

我想做以下事情:

f = SomeClass()
something(f.name) = deepcopy(f)
因此,当f.name=='ABC'时,我有一个名为ABC的类的实例


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

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

范例-

>>> 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

您可以通过修改或返回的范围字典来完成此操作:


但我必须指出,在大多数情况下,这是一种不好的做法。

你想用这个特定的名称做什么?构造这样一个名称的一个地方是在_str__self方法中。我不清楚你是想设置实例的name属性,还是想命名变量?你也可以将实例存储在一个列表中;每个元素都知道其名称属性。是的,但您将无法使用名称属性访问该元素。虽然问题中没有明确提出这一点,但我猜这是一个要求,因为他想做一些类似-somethingf.name=。我认为这不是问题中的要求。OP似乎只是希望每个实例都有一个单独的name属性。而且,我不认为在这种情况下使用列表而不是字典有任何好处,两者可能是相同的。
from copy import deepcopy

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

f = SomeClass('ABC')

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

print(ABC)