【问题标题】:Python static inheritance in class variable类变量中的Python静态继承
【发布时间】:2016-08-24 12:50:22
【问题描述】:

在python中,有没有办法在“静态构造函数”中获取类名?我想使用继承的类方法初始化一个类变量。

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

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

NameError: 名称“B”未定义

【问题讨论】:

    标签: python oop static


    【解决方案1】:

    直到完整的 class 套件执行完毕并创建了类对象后,才会分配名称 B。出于同样的原因,类的__name__ 属性在创建类对象之前也不会设置。

    您必须在之后分配该属性:

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-29
      • 2020-10-18
      • 2011-08-05
      • 1970-01-01
      • 2019-04-28
      • 2011-02-13
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多