【问题标题】:Is it possible to find out from which module a class instance come from?是否可以找出类实例来自哪个模块?
【发布时间】:2023-03-12 19:26:01
【问题描述】:

我想知道是否可以从该模块的类实例中获取模块名称和目录路径。 我需要它,因为我用 pickle 保存了一个类实例,当我从另一个软件(在同一台计算机上)加载它时,我需要知道这个类的来源。

更新

所以我尝试了@albar的aswer

>>> from Models import Model_physio_moyen
>>> b = Model_physio_moyen.pop_Sigmoid_outside_noise
>>> module_name = sys.modules[b.__module__].__name__
>>> module_name
'Models.Model_physio_moyen'

这样就可以正常工作,除非该类已使用 jitclassof numba 编译:

>>> from Models.Pops_Stim import ATN
>>> a = ATN.pop_ATN()
>>> module_name = sys.modules[a.__module__].__name__
>>> module_name
'numba.jitclass.boxing'

在这种情况下,我希望我能找到 Models.Pops_Stim,但我得到的是 'numba.jitclass.boxing'。

【问题讨论】:

    标签: python class module instance


    【解决方案1】:

    假设您的实例名为a

    import sys
    module_name = sys.modules[a.__module__].__name__
    module_file = sys.modules[a.__module__].__file__
    

    【讨论】:

    • 好的,这很好,但如果类是用jitclass 编译的,那就不行了。我更新了我的问题。我不知道我是否可以在那种情况下恢复模块名称。
    猜你喜欢
    • 2020-11-21
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多