【发布时间】:2021-12-28 17:06:40
【问题描述】:
可以使用__name__ 询问属性名称。不过,我也想查询一下类名:
class Test:
__slots__ = ['a', 'b']
print(Test.a.__name__) # → 'a' but wanted 'Test.a' or only the class 'Test'
【问题讨论】:
标签: python string class magic-methods classname
可以使用__name__ 询问属性名称。不过,我也想查询一下类名:
class Test:
__slots__ = ['a', 'b']
print(Test.a.__name__) # → 'a' but wanted 'Test.a' or only the class 'Test'
【问题讨论】:
标签: python string class magic-methods classname
听起来你想要__qualname__。
class Test:
__slots__ = ['a', 'b']
Test.a.__qualname__
# gives 'Test.a'
见https://www.python.org/dev/peps/pep-3155/
还有只获取类名的神奇方法吗?
您可以通过Test.a.__objclass__ 获取课程本身。所以类的名称可以通过
Test.a.__objclass__.__name__
# gives 'Test'
【讨论】:
__objclass__ 不如__qualname__ 灵活,尤其是函数不支持