python – 獲取類的self .__ module__,無論如何匯入

我有一個庫類,它取決於它是如何匯入的,一個依賴於self .__ module__的方法來識別更改行為 – 取決於我是相對還是絕對地匯入它.有沒有辦法強制類的self .__ name__屬性絕對迴歸?

我意識到一個解決方案是強制每個人以相同的方式匯入子類,但是想知道是否有辦法從庫的角度強制它.

總結結構

我在庫中有一個模組

project/
    mylib/
        foo.py
            LibraryClass
            def get_name(self):
                return "%s.%s.%s" % \
                    (self.__module__, self.__class__.__name__, self.some_init_property)
    prog/
        utils.py
            fooClass(LibraryClass)
        bar.py
            def some_func()
               #see below

在mylib中,我有一個匯入器通過我們的django專案的設定文件中的classname字串匯入LibraryClass的所有子類.

基本上,我們看到的行為取決於您的匯入方式.

所以我在bar.py中觀察到兩種行為:

def some_func_absolute():
    from prog.utils import fooClass
    f = fooClass("lalala")
    print f.get_name()
    #prints prog.utils.fooClass.lalala

def some_func_relative():
    from utils import fooClass
    f = fooClass("lalala")
    print f.get_name()
    #prints foo.fooClass.lalala