Python 3-获取对象的定义路径

时间:2019-03-04 16:43:13

标签: python python-3.x

在我的Python3项目的主文件中,我想将导入的类的虚线定义路径显示为字符串。

我导入的课程:

名为WoodCuting,位于constants/dimensions.py中。

class WoodCuting():
    WIDTH = 12
    HEIGHT = 12

我想要的:

将导入的类的定义的定义路径作为字符串-constants.dimensions.WoodCuting

我尝试过的事情:

str(type(WoodCuting))返回constants.dimensions.WoodCuting-这正是我想要的。但是,这不是可靠的解决方案。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用对象的__module____qualname__属性来完成此操作。

>>> '.'.join((WoodCuting.__module__, WoodCuting.__qualname__))
'constants.dimensions.WoodCuting'

使用__qualname__而不是__name__意味着您可以获得嵌套对象的正确结果。

假设此类在模块中:

class Foo:
    class Bar:
        pass

>>> '.'.join((constants.dimensions.Foo.Bar.__module__, constants.dimensions.Foo.Bar.__qualname__))
'constants.dimensions.Foo.Bar'

答案 1 :(得分:2)

假设WoodCuting位于constants/dimensions.py中:

from constants.dimensions import WoodCuting

def get_full_name(c):
    return c.__class__.__module__ + '.' + c.__class__.__name__

print(get_full_name(WoodCuting()))

返回constants.dimensions.WoodCuting

答案 2 :(得分:0)

尝试一下

import inspect

class WoodCuting():
    WIDTH = 12
    HEIGHT = 12

a=inspect.getfile(WoodCuting)
print (a)