我希望所有实例都定义一个具有类范围范围/访问权限的数组。示例模块(bc.py):
class B:
glist = [] # array common to all instances
def __init__(self, number):
glist.append(number)
def printCurrentList():
print ('Current List:', glist)
class C:
def __init__(self):
b1 = B(7)
b2 = B(2)
b3 = B(8)
def printNow(self):
B.printCurrentList()
我从a.py文件中调用它,如:
from bc import C
C().printNow()
将错误视为:
python a.py
Traceback (most recent call last):
File "a.py", line 2, in <module>
C().printNow()
File "/Users/manidipsengupta/pytorials/bc.py", line 16, in __init__
b1 = B(7)
File "/Users/manidipsengupta/pytorials/bc.py", line 7, in __init__
glist.append(number)
NameError: name 'glist' is not defined
这应该是什么正确的语法?谢谢。
答案 0 :(得分:4)
无论
B.glist.append(number)
或
self.glist.append(number)
会奏效。我更喜欢前者,因为它更好地表明glist
是一个静态类变量,而不是每个实例。
答案 1 :(得分:1)
您可以通过类或实例访问类变量:
class B:
glist = [] # array common to all instances
def __init__(self, number):
self.glist.append(number)
@classmethod
def printCurrentList(cls):
print ('Current List:', cls.glist)