如何将字符串更改为另一个文件中的类对象

时间:2014-08-13 12:58:37

标签: python string class object module

我已经使用此函数将一些字符串更改为类对象。

但现在我已经定义了一个新模块。如何实现相同的功能?

def str2class(str):
    return getattr(sys.modules[__name__], str)

我想想一些例子,但很难想到。无论如何,主要问题可能是文件路径问题。

如果你真的需要一个例子,GitHub代码是here

Chain.py文件需要执行自动操作机制。现在它失败了。

新方法:
现在我将所有文件放在一个文件折叠下,它可以工作,但如果我使用模块概念,它就会失败。因此,如果问题出在模块文件中,如何将字符串对象更改为相对类对象?

感谢您的帮助。

2 个答案:

答案 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()。您会对大多数对象上可用的隐藏方法的数量感到惊讶。