可以知道Python子类文件的路径吗?
我有一个插件系统。这些插件都是从一个共同的父类派生出来的,结构大致是这样的:
-- SDK
--- basePlugin.py
-- PLUGINS
--- PluginA
---- Plugin.py
---- Config.ini
--- PluginB
---- Plugin.py
---- Config.ini
我需要在 basePlugin.py 的 __init__
方法中读取 Config.ini
文件的信息。目前在每个插件中,我都是这样做的:
class PluginA(BaseSync):
__init__(self, path):
super(PluginA,self).__init__(self, __file__)
但我在想,是否有可能在父类中知道子类是在哪个文件里的呢...
1 个回答
28
假设 BaseSync
是一个新式的类,那么它的父类 BaseSync
可以通过这种方式找到定义 PluginA
的文件:
import sys
class BaseSync(object):
def __init__(self):
path=sys.modules[self.__module__].__file__
(这样你就不需要明确地传递 path
了)。