在Python3项目的主文件中,我想将导入类的点式定义路径显示为字符串。
我的导入类:
名为WoodCuting,位于constants/dimensions.py中。

class WoodCuting():
    WIDTH = 12
    HEIGHT = 12

我想要的是:
导入类的点式定义路径为字符串-constants.dimensions.WoodCuting
我试过的:
str(type(WoodCuting))返回constants.dimensions.WoodCuting-这正是我想要的。但这不是可靠的解决方案。
有什么想法吗?

最佳答案

可以使用对象的__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'

10-04 18:59