我有两个同一类的对象,其中有一个数组属性。在填充第一个数组后,再填充第二个数组,第二个数组预先将第一个数组的值填充进去。
from random import *
class Army:
divisions = []
def __init__(self, name):
self.name = name
def rnd(max):
return randint(0, max - 1)
def init_army(i):
army = Army(names[i])
armies.append(army)
divisions = rnd(num_divisions) + 1
for i in range(divisions):
army.divisions.append(rnd(num_divisions) + 1)
names = ["name1", "name2"]
armies = []
num_armies = 2
num_divisions = 6
for i in range(num_armies):
init_army(i)
print(armies[i].name, armies[i].divisions)
Typical Output:
name1 [5, 1]
name2 [5, 1, 2, 5, 6, 2, 1]
这几行
class Army:
divisions = []
使 divisions
一个类属性。
把它变成一个实例属性。
class Army:
def __init__(self, name):
self.divisions = []
self.name = name
在python中,没有声明。取而代之的是通过赋值来定义名称(变量和属性)。
你把东西分配到哪里很重要。
请看一下命名空间