从函数创建类的实例

时间:2019-12-12 17:51:29

标签: python

这是我的第一个问题,请理解我不是母语人士。

我正在尝试在脚本解析JSON期间创建类的实例。 脚本的字典像:

classes = {'user': 'User', 'chat': 'Chat', 'message': 'Message'}

和类UserChatMessage。 当脚本在字典中的json中找到键时,我需要创建相应类的实例。

我找到了解决方案,但我认为这很愚蠢:

>>> class User():
...     name = 'John'
>>> class_name = 'User()'
>>> variable_name = 'user'
>>> exec(f'{variable_name}={class_name}')``` 


1 个答案:

答案 0 :(得分:0)

您可以按以下方式使用globals()命令:

globals()['user'] = globals()['User']()

globals()函数返回您在全局范围内获得的所有内容(为dict

完整代码:

class User():
    pass
class Chat():
    pass
class Message():
    pass
classes = {'user': 'User', 'chat': 'Chat', 'message': 'Message'}
my_globals = globals()
for var_name, class_name in classes.items():
    my_globals[var_name] = my_globals[class_name]()