我已经使用此函数将一些字符串更改为类对象。
但现在我已经定义了一个新模块。如何实现相同的功能?
def str2class(str):
return getattr(sys.modules[__name__], str)
我想想一些例子,但很难想到。无论如何,主要问题可能是文件路径问题。
如果你真的需要一个例子,GitHub代码是here。
Chain.py文件需要执行自动操作机制。现在它失败了。
新方法:
现在我将所有文件放在一个文件折叠下,它可以工作,但如果我使用模块概念,它就会失败。因此,如果问题出在模块文件中,如何将字符串对象更改为相对类对象?
感谢您的帮助。
答案 0 :(得分:0)
您可能应该像这样写这个函数:
def str2class(s):
return globals()[s]
即使__name__
设置为__main__
,它也会更加清晰有效。
答案 1 :(得分:0)
您可以通过直接访问模块的命名空间来完成此操作:
import module
f = module.__dict__["func_name"]
# f is now a function and can be called:
f()
Python的最大优点之一是内部可供您访问,并且它们符合语言范例。命名空间中的名称(变量,类,函数等)实际上只是字典中映射到该名称值的键。
如果您对可以使用的其他语言内部感兴趣,请尝试运行dir()
。您会对大多数对象上可用的隐藏方法的数量感到惊讶。