首页 > 解决方案 > 在下一个对象中追加重复

问题描述

我有两个同一个类的对象,它们有一个数组属性。在填充第一个数组,然后是第二个数组后,第二个数组将值添加到第一个数组中。

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.xappendrepeat

解决方案


线条

class Army:
    divisions = []

divisions一个类属性。

把它变成一个实例属性:

class Army:

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

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

你在哪里分配事情很重要。

请查看命名空间


推荐阅读