gpt4 book ai didi

python - 获取具有元类的类的名称

转载 作者:行者123 更新时间:2023-11-30 22:01:36 26 4
gpt4 key购买 nike

假设我用这样的元类定义一个类A:

class Meta(type):
pass

class A(metaclass=Meta):
pass

然后,当我尝试访问类 A 的名称时,我得到元类的名称:

A.__class__.__name__
# 'Meta'

但是,它不应该给我A,我定义的类吗?

注意:我尝试使用A.__mro__[0].__name__,它确实给了我A,但我仍然很困惑为什么 A.__class__ 给我元类名称。有人对此有解释吗?

最佳答案

__class__ dunder 报告:

the class to which a class instance belongs.

引自instance.__class__

类 A 属于其元类的类 - 只有 A 的实例属于类 A 本身。

a = A() 
print(a.__class__.__name__) # 'A'
print(A.__class__.__name__) # 'Meta'

class P: pass

print(P.__class__.__name__) # type
print(P().__class__.__name__) # P

要获取类本身的名称,只需使用

A.__name__

如果你真的需要它。

<小时/>

我仍然有办法摸索所有answerWhat are metaclasses in Python? - 也许它可以帮助你。

关于python - 获取具有元类的类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54010053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com