0

所以我从同一个类中创建了 ax 个实例,每个实例我想要一个包含 10 个随机数的列表。问题是当我实例化它们时,它会为所有实例提供相同的列表。我做了一些研究,我知道我做错了什么。基本上我认为我不应该使用 .append() 方法,因为它扩展了原始类的 List 属性。来了

from random import randint

class Vehicle():
    List = []

    def __init__(self):
        for i in range(10):
            Vehicle.List.append(randint(0,10))


from Vehicle import Vehicle

class Instances():
    vehicles = []

    def __init__(self):
        for i in range(10):
            new_vehicle = Vehicle():
            Instances.vehicles.append(new_vehicle)

当我实例化 Instances 类时,一切正常,但是每个 Vehicle 实例的 List 属性都是相等的,并且它们的长度 = 100。现在我得到了长度 = 100,因为每个实例附加了 10 个实例 x 10。最大的问题是,我怎样才能从 Vehicle 类中获得 10 个实例,并且它们都有一个唯一的 10 个具有所需长度(即 10)的随机数的列表?

4

2 回答 2

4

您混淆了类和实例级别的属性。正如您编写的代码是List的一个属性Vehicle,即有一个对象,List并且它由 的所有实例共享Vehicle

试试这个:

class Vehicle():
    def __init__(self):
        self.List = []
        for i in range(10):
            self.List.append(randint(0,10))
于 2013-09-22T20:28:09.650 回答
2

创建List一个实例变量而不是类变量:

def __init__(self):
    self.List = []
    for i in range(10):
        self.List.append(randint(0,10))
于 2013-09-22T20:28:53.470 回答