代码之家  ›  专栏  ›  技术社区  ›  TimW

Python 2.7:通过调用staticmethod初始化静态变量

  •  1
  • TimW  · 技术社区  · 8 年前

    我试图使用类中定义的静态函数初始化一些静态类变量。Python抛出了一个错误,表明在初始化期间调用上述静态函数时未定义类名。有没有更好的方法?非常感谢。

    >>> class Example:
    ...     varA = 5
    ...     @staticmethod
    ...     def func():
    ...         return Example.varA + 1
    ...     varB = func.__func__()
    ... 
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 6, in Example
      File "<stdin>", line 5, in func
    NameError: global name 'Example' is not defined
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Mike Müller    8 年前

    您只能在定义类之后访问它。因此,定义后的di:

    class Example(object):
        varA = 5
        @staticmethod
        def func():
            return Example.varA + 1
    
    Example.varB = Example.func()
    

    这在没有任何静态方法的情况下实现了您想要的:

    class Example(object):
        varA = 5
        varB = varA + 1
    

    顺便说一句,在Python 2中,您应该始终继承表单 object 为了得到一个新的风格类。