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