【问题标题】:Create instance of class from function [duplicate]从函数创建类的实例[重复]
【发布时间】:2019-12-13 01:54:23
【问题描述】:

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

我正在尝试在脚本解析 JSON 期间创建类的实例。 脚本有类似的dict:

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

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

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

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


【问题讨论】:

标签: python


【解决方案1】:

您可以像这样使用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]()

【讨论】:

  • 谢谢。它有效
  • @ЕвгенийСоколов 没问题 :)
猜你喜欢
  • 2018-01-03
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 2021-12-07
  • 1970-01-01
  • 2012-05-08
相关资源
最近更新 更多