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