Можно ли узнать путь к файлу подкласса в python? - PullRequest
7 голосов
/ 24 октября 2010

У меня есть система плагинов. Подкласс плагинов от общего предка ... объявление выглядит так:

-- SDK
--- basePlugin.py
-- PLUGINS
--- PluginA
---- Plugin.py
---- Config.ini
--- PluginB
---- Plugin.py
---- Config.ini

Мне нужно прочитать информацию Config.ini в basePlugin.py __init__. В настоящее время в каждом плагине я делаю:

class PluginA(BaseSync):
  __init__(self, path):
    super(PluginA,self).__init__(self, __file__)

Но интересно, можно ли узнать в родительском классе, в каком файле находится подкласс ...

1 Ответ

13 голосов
/ 24 октября 2010

Предполагая, что BaseSync является классом нового стиля, родительский класс BaseSync может найти файл, который определяет PluginA таким образом:

import sys
class BaseSync(object):
    def __init__(self):
        path=sys.modules[self.__module__].__file__

(поэтому вам не нужно явно передавать path).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...