在类中使用静态方法Python填充一次静态变量

时间:2018-01-25 14:36:47

标签: python class static-methods static-variables

我在Python中有一个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静态变量。基本上,一旦我想要实例化类,我想填充静态变量

2 个答案:

答案 0 :(得分:2)

使用@classmethod:

class A( object ):
  arr = []

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

A.FillArr()

print A.arr

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

/ 修改的/ 我在下面的评论中提到的使用常规方法示例(基于雅克解释):

class A
   arr=[]

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

   def __init__( self ):
     self.FillArr()

a = A()
print a.arr

答案 1 :(得分:1)

这在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)