类variab中的Python静态继承

2024-04-24 12:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中,有没有一种方法可以在“static constructor”中获取类名?我想用继承的类方法初始化一个类变量。在

class A():
    @classmethod
    def _getInit(cls):
        return 'Hello ' + cls.__name__

class B(A):
    staticField = B._getInit()

NameError: name 'B' is not defined


Tags: 方法namehelloreturnisdefstaticclass
1条回答
网友
1楼 · 发布于 2024-04-24 12:23:21

在执行完整的class套件并创建一个class对象之前,B名称不会被分配给。出于同样的原因,类上的__name__属性在创建class对象之前也不会设置。在

之后必须指定该属性:

class A():
    @classmethod
    def _getInit(cls):
        return 'Hello ' + cls.__name__

class B(A):
    pass

B.staticField = B._getInit()

另一种方法是使用类装饰器(传递新创建的类对象)或使用元类(它首先创建类对象并指定要使用的名称)。在

相关问题 更多 >