如何获取Python中类的模块实例?

14 投票
3 回答
8929 浏览
提问于 2025-04-15 14:50

我正在学习Python,像往常一样,我对我的入门项目充满了雄心壮志。我正在为一个社区网站工具包开发一个插件系统。我的插件父类里有一个叫做 install_path 的方法。我想获取 self__module____path__(在这个情况下,self 是子类)。问题是,__module__ 返回的是一个字符串,而不是模块的实例。使用 eval() 既不可靠也不理想,所以我需要一个好的方法来获取实际的模块实例,而不是通过 eval 来处理从 __module__ 返回的字符串。

3 个回答

1

另外,如果你只是想要模块的路径,可以使用这个模块的全局 __file__ 变量

1

关于导入模块,你可以这样理解:

X = __import__(‘X’) 这个写法和 import X 类似,但有两个不同之处:1) 你需要把模块名作为字符串传入,2) 你需要把它明确地赋值给你当前的变量。

你可以把模块名(不是'X')传进去,然后会得到这个模块的实例。Python会确保你不会重复导入同一个模块,所以你得到的会是你之前导入的那个模块的实例。

14

sys.modules 是一个字典,里面存放了所有已经导入的模块。因此,你可以使用:

mod = sys.modules[__module__]

撰写回答