所以我从同一个类创建了一个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 属性都相等,并且它们的长度 = 100。现在我得到长度 = 100,因为每个实例附加 10 个实例 x 10。最大的问题是,我怎么能有 10 个来自 Vehicle 类的实例,并且它们都有一个包含所需长度(即 10)的 10 个随机数的唯一列表?
您混淆了类和实例级别的属性。 当你编写代码时List
它是Vehicle
的一个属性,即有一个对象是List
的,它由Vehicle
的所有实例共享
试试这个:
class Vehicle():
def __init__(self):
self.List = []
for i in range(10):
self.List.append(randint(0,10))
将List
作为实例变量而不是类变量:
def __init__(self):
self.List = []
for i in range(10):
self.List.append(randint(0,10))