2010-10-23 4 views
6

Tengo un sistema de complemento. La subclase de los plugins de un ancestro común ... ad aspecto:¿Es posible conocer la ruta del archivo de una subclase en python?

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

tengo que leer la información de Config.ini en basePlugin.py __init__. Actualmente en cada plugin que hago:

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

Pero pregunto si es posible conocer en la clase principal en la que se encuentra el archivo de sub-clase ...

Respuesta

9

Suponiendo BaseSync es una clase de nuevo estilo, la clase padre BaseSync pudo encontrar el archivo que define PluginA esta manera:

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

(por lo que no tiene que pasar el path explícitamente).

Cuestiones relacionadas