复制到下一个对象中

问题描述 投票:0回答:1

我有两个同一类的对象,其中有一个数组属性。在填充第一个数组后,再填充第二个数组,第二个数组预先将第一个数组的值填充进去。

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]
python-3.x append repeat
1个回答
0
投票

这几行

class Army:
    divisions = []

使 divisions 一个类属性。

把它变成一个实例属性。

class Army:

    def __init__(self, name):
        self.divisions = []
        self.name = name

在python中,没有声明。取而代之的是通过赋值来定义名称(变量和属性)。

你把东西分配到哪里很重要。

请看一下命名空间

© www.soinside.com 2019 - 2024. All rights reserved.