0

したがって、同じクラスから ax 個のインスタンスを作成し、各インスタンスに 10 個の乱数を含むリストを作成します。問題は、それらをインスタンス化すると、すべてのインスタンスに同じリストが与えられることです。私はいくつかの調査を行い、私が間違っていることを知っています。基本的に、生のクラスから List 属性を拡張しているため、 .append() メソッドを使用するべきではないと思います。ここに行きます

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 です。10 インスタンス x 10 で各インスタンスが追加されるため、長さ = 100 になります。大きな問題は、Vehicle クラスから 10 個のインスタンスを取得するにはどうすればよいかということです。それらはすべて、希望する長さ (つまり 10) の 10 個の乱数の一意のリストを持ちます。

4

2 に答える 2

4

クラスとインスタンスレベルの属性を混同しています。あなたコードListVehicle_ _ListVehicle

代わりにこれを試してください:

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