在 class 中从静态方法 Python 填充一次静态变量

Populate once static variable from static method Python within a class

我在 Python 中有一个 Class A,我想填充调用静态方法的静态变量,例如:

Class A:
   arr = []

   @staticmethod
   def FillArr():
       #do more stuff but for semplicity...
       A.arr = [[2,2,2,]]

  FillArr.__func__()

当我 运行 我得到 'NameError: name A not defined' 的代码时,基本上我无法初始化 arr 静态变量。基本上一旦 class 被实例化,一旦我想填充静态变量

使用@classmethod:

class A(object):
  arr = []

  @classmethod
  def FillArr(cls):
    cls.arr = [[2,2,2]]

A.FillArr()

print A.arr

这将导致:[[2,2,2]]

/编辑/ 我在下面的评论中提到的使用普通方法的例子(基于 Jacques 的解释):

class A
   arr=[]

   def FillArr(self):
     self.arr = [[2,2,2,]]

   def __init__(self):
     self.FillArr()

a = A()
print a.arr

这在 Python 3.6:

上完美运行
class A:
   arr = []

   @staticmethod
   def fillArr():
       #do more stuff but for simplicity...
       A.arr = [[2,2,2,]]

A.fillArr()

print (A.arr)

或者,在您的评论中添加额外信息:

class A:
    arr = []

    @staticmethod
    def fillArr():
        #do more stuff but for simplicity...
        A.arr = [[2,2,2,]]

    def __init__ (self):
        if not A.arr:
           A.fillArr ()

A ()

print (A.arr)