在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'