所以我从同一个类创建了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)的随机数的唯一列表?
答案 0 :(得分:4)
您正在混淆类和实例级别属性。编写代码时List
是Vehicle
的属性,即一个对象是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))