gpt4 book ai didi

python - 定义和访问自定义对象列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:39 25 4
gpt4 key购买 nike

我有一个对象

class Car:
def __init__(self):
price = float(0)

还有一个

class Day:
def __init__(self):
self.carList = [Car() for each in range(100)]
self.createPriceList()

def createPriceList(self):
tempCar = Car()
for i in range(100):
tempCar.price = function_giving_a_value() # 10 last cars have 0.0 as value
self.carList[i] = tempCar
print i, self.carList[i].price
# prints the correct list : each line contains a correct price
#edited after answers : in fact it's just misleading, cf answers

def showPriceList(self):
for i in range(len(self.carList)):
print i, self.carList[i].price
# prints i (correct) but each self.carList[i].price as 0.0
# so len(self.carList) gives correct value,
# but self.carList[i].price a wrong result

我的问题是:

  • 为什么在 showPriceList() 中,self.carList 被正确识别(len 在循环中给出正确的数字)但 self .carList[i].price 只给出零? (当看起来正确填写方法 createPriceList() 时)

最佳答案

最可能的解释是您实际上并没有在调用 showPriceList() 之前调用 createPriceList() [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()

关于python - 定义和访问自定义对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8506239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com