来自同一个类的Python实例及其自己的随机数列表

时间:2013-09-22 20:22:40

标签: python list object instance

所以我从同一个类创建了x个实例,每个实例我想要一个包含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属性都是相等的,它们都有length = 100.现在我得到长度= 100因为是10个实例x 10附加每个实例。最大的问题是,我如何从Vehicle类中获得10个实例,并且它们都具有10个具有所需长度(即10)的随机数的唯一列表?

2 个答案:

答案 0 :(得分:4)

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

请改为尝试:

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

答案 1 :(得分:2)

使List成为实例变量而不是类变量:

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