【发布时间】:2021-09-08 10:56:28
【问题描述】:
append() 有一些问题。预期功能:用户选择输入打印数据的汽车数据。如果选择输入数据,则要求用户提供汽车制造商和厂商建议零售价。输入将被存储。当用户选择打印时 - 程序将提供先前输入的列表(品牌和标价)。我做的如下。
class CARDATA:
brand = ""
price = ""
def menu():
print("1) Input car data")
print("2) Print car data")
option = int(input("Your pick was: "))
return option
def car_object(car_description):
car = CARDATA()
car.brand = input("Car make?: ")
car.price = int(input("Listed price? "))
car_description.append(car)
return car
def main():
car_description = []
while (True):
selection = menu()
if (selection == 1):
car = car_object(car_description)
#car_description.append(car)
elif (selection == 2):
print("Car makes and selling prices on the list:")
for vehicle in car_description:
print(car.brand, car.price)
return car_description
main ()
我的列表似乎在某处被覆盖,因为我只存储最后的汽车制造商/价格。我想要的是让程序打印出所有的汽车制造商/价格。我认为问题出在 main() 中,但看起来我的列表在 for 循环开始之前就已经初始化了。问题似乎出在其他地方。我不确定我没有看到什么。
【问题讨论】:
-
print(car.brand, car.price)应该使用vehicle,而不是car。 -
或者把你的循环改成
for car in car_description: -
通常初始化类实例的属性是在其
__init__()方法中完成的,而不是调用者。 -
您的缩进似乎有点不对劲。可能是由于复制粘贴到 SO。
-
@Joshua,看来是这样。我仔细检查确定,这是一个复制问题。 Barmar 与他的两个 cmets 都在现场
标签: python class append instance