Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Python 2.7_Object_Variables - Fatal编程技术网

Python 如何使用字符串';值作为对象名称

Python 如何使用字符串';值作为对象名称,python,string,python-2.7,object,variables,Python,String,Python 2.7,Object,Variables,我正在尝试这样做: user_id = 12345 "user_id" = user("...") # "user" is my class # I want to replace "user_id" with "12345" 有可能吗?如果你真的需要这个,你最好写一个口述: my_objs = {} user_id = 12345 my_objs[user_id] = User() print(my_objs) 那么输出将是: {12345: <__main__.User obje

我正在尝试这样做:

user_id = 12345
"user_id" = user("...")  # "user" is my class
# I want to replace "user_id" with "12345"

有可能吗?

如果你真的需要这个,你最好写一个口述:

my_objs = {}
user_id = 12345
my_objs[user_id] = User()
print(my_objs)
那么输出将是:

{12345: <__main__.User object at 0x123456789abc>}

如果您确实需要此功能,但无法使用dict,
getattr
setattr
可能会有帮助:

user_name = "hahaha"
setattr(__import__(__name__), user_name, User())

print(hahaha)

new_name = "hahaha"
assert hahaha is getattr(__import__(__name__), new_name)
它将生成相同的输出,断言将通过


请注意,这种方法在函数内部不会完全有效,它只在模块级别有效。

在运行时创建变量名是不好的Python风格。动态创建名称的想法是Basic等没有良好字典和列表结构的语言遗留下来的。
user_name = "hahaha"
setattr(__import__(__name__), user_name, User())

print(hahaha)

new_name = "hahaha"
assert hahaha is getattr(__import__(__name__), new_name)