我有一个班级
class Foo():
def some_method():
pass
另一个类在同一个模块中:
class Bar():
def some_other_method():
class_name = "Foo"
#can I access the class Foo above using the string "Foo"?
我希望能够使用字符串“Foo”访问Foo
类。
如果我在另一个模块中使用:
,我可以这样做from project import foo_module
foo_class = getattr(foo_module, "Foo")
我可以在同一个模块中做同样的事情吗?
IRC的人建议我使用映射字典将字符串类名映射到类中,但如果有更简单的方法,我不想这样做。
答案 0 :(得分:44)
import sys
getattr(sys.modules[__name__], "Foo")
# or
globals()['Foo']
答案 1 :(得分:4)
You can do it with help of sys
module:
import sys
def str2Class(str):
return getattr(sys.modules[__name__], str)
答案 2 :(得分:2)
globals()[class_name]
请注意,如果这不是绝对必要的,您可能需要重构代码以避免使用它。