【问题标题】:Appending an instance issues in python在 python 中附加一个实例问题
【发布时间】: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


【解决方案1】:

你忘了在CARDATA 类中创建标签。当我添加它们时,它可以正常工作:

class CARDATA:
    brand = ""
    price = ""

【讨论】:

  • 错误的缩进来自复制粘贴到 StackOverflow。它有点工作,是的。但是Barmar在上面有几个cmets。他的建议非常好,两者都会产生我想要的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2015-06-20
  • 2017-09-19
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多