在我的Python3项目的主文件中,我想将导入的类的虚线定义路径显示为字符串。
我导入的课程:
名为WoodCuting
,位于constants/dimensions.py
中。
class WoodCuting():
WIDTH = 12
HEIGHT = 12
我想要的:
将导入的类的定义的定义路径作为字符串-constants.dimensions.WoodCuting
。
我尝试过的事情:
str(type(WoodCuting))
返回constants.dimensions.WoodCuting
-这正是我想要的。但是,这不是可靠的解决方案。
有什么想法吗?
答案 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)