首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从名称实例化Python类

从名称实例化Python类
EN

Stack Overflow用户
提问于 2010-02-09 10:21:04
回答 6查看 20.8K关注 0票数 20

所以我有一组类和一个包含其中一个类名的字符串。如何根据该字符串实例化一个类?

class foo:
  def __init__(self, left, right):
     self.left = left
     self.right = right

str = "foo"
x = Init(str, A, B)

我想让x成为类foo的实例化。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-02-09 10:34:38

如果您知道所涉及的名称空间,则可以直接使用它--例如,如果所有类都在模块zap中,则字典vars(zap)就是该名称空间;如果它们都在当前模块中,则globals()可能是获取该字典的最方便的方法。

如果这些类并不都在同一个名称空间中,那么构建一个“人工的”名称空间(一个专用的dict,类名作为键,类对象作为值),就像@Ignacio建议的那样,可能是最简单的方法。

票数 20
EN

Stack Overflow用户

发布于 2011-05-11 14:13:53

在您的示例中,您可以使用以下内容

get_class = lambda x: globals()[x]
c = get_class("foo")

更简单的是,没有从模块获取类

import somemodule
getattr(somemodule, "SomeClass")
票数 26
EN

Stack Overflow用户

发布于 2010-02-09 10:22:57

classdict = {'foo': foo}

x = classdict['foo'](A, B)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2226330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档