Наиболее вероятное объяснение состоит в том, что вы на самом деле не звоните createPriceList()
до вызова showPriceList()
. [ edit : теперь, когда вы отредактировали код в своем вопросемы можем исключить эту возможность]
Кроме того, createPriceList()
имеет ошибку, из-за которой вы присваиваете ссылки на один и тот же объект Car
для всех элементов списка.Эта ошибка также может объяснить поведение, если и только если последний вызов random()
function_giving_a_value()
возвращает ноль.
Наконец, вы пропускаете self.
в нескольких местах[ edit : опять же, вы, кажется, исправили некоторые из них в недавнем редактировании].
Вот как я бы написал:
import random
class Car:
def __init__(self, price):
self.price = price
class Day:
def __init__(self, n):
self.carList = []
for i in range(n): # could also use list comprehension here
self.carList.append(Car(random.random()))
def printPriceList(self):
for i, car in enumerate(self.carList):
print(i, car.price)
day = Day(20)
day.printPriceList()