可以知道Python子类文件的路径吗?

10 投票
1 回答
3249 浏览
提问于 2025-04-16 05:59

我有一个插件系统。这些插件都是从一个共同的父类派生出来的,结构大致是这样的:

-- 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 了)。

撰写回答