gpt4 book ai didi

python - 如何将 `__class__.__name__` 设置为类属性?

转载 作者:行者123 更新时间:2023-11-30 21:50:56 31 4
gpt4 key购买 nike

我需要从类中获取类名:

class Cls:
notation = None

def __init__(self):
notation = self.__class__.__name__

print(Cls.notation) 打印 None 但我需要 'Cls'

如何修复它或如何定义返回类名称的类属性?

最佳答案

您正在分配给局部变量,而不是类属性:

def __init__(self):
Cls.notation = self.__class__.__name__

请注意,如果涉及 Cls 的子类,则 self.__class__ 不一定是 Cls。您可能想使用

def __init__(self):
type(self).notation = self.__class__.__name__

取决于您的用例。

分配给 self.notation 不起作用,因为这会创建一个隐藏类属性的实例属性。

如果您希望在定义类后立即 Cls.notation == "Cls",您也可以对其进行硬编码:

class Cls:
notation = "Cls"

class Cls:
pass

Cls.notation = Cls.__name__

虽然你也可以写

class Cls:
notation = __qualname__

根据语句第一行中使用的名称设置其值,尽管 __qualname__ 也考虑了嵌套:

class Cls1:
class Cls2:
notation = __qualname__ # "Cls1.Cls2", not "Cls2"

关于python - 如何将 `__class__.__name__` 设置为类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60240455/

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