如何获取Python中类的模块实例?
我正在学习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__]