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

在Python中将静态方法的输出分配给静态变量

  •  -1
  • sixtytrees  · 技术社区  · 4 年前

    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静态变量。基本上,一旦类被实例化,我就会填充静态变量

    0 回复  |  直到 8 年前
        1
  •  3
  •   Jacques de Hooge    8 年前

    这在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)
    
        2
  •  2
  •   Nemelis    8 年前

    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