Python新手,对2个以上的实例使用_添加_方法?

2024-10-01 00:20:48 发布

您现在位置:Python中文网/ 问答频道 /正文

class Car:

    def __init__(self, brand, color, model, year, mileage):
        self.brand = brand
        self.color = color
        self.year = year
        self.model = model
        self.mileage = mileage

    def __str__(self):
        return  f'TYPE: NORMAL CAR\nBrand: {self.brand}\nColor: {self.color}\n'

    def __add__(self, other):
        line = '- ' * 15
        return '\n'.join([str(self), self.documentation(), line, str(other), other.documentation(), line])

    def documentation(self):
        return f'DOCUMENTATION\nModel: {self.model}\nYear: {self.year}\nMileage: {self.mileage} Km'


class SportCar(Car):

    def __init__(self, brand, color, model, year, mileage, engine, maxspeed):
        super().__init__(brand, color, model, year, mileage)
        self.engine = engine
        self.maxspeed = maxspeed

    def __str__(self):
        return  f'TYPE: SPORT CAR\nBrand: {self.brand}\nColor: {self.color}\n'

    def documentation(self):
        return f'DOCUMENTATION\nModel: {self.model}\nYear: {self.year}\nMileage: {self.mileage} Km\n' \
           f'Engine: {self.engine}\nMax Speed: {self.maxspeed}'


car1 = SportCar('Audi', 'Black', 'R8', '2018', '35 000', 'V6', '350 Km/h')
car2 = Car('Skoda', 'White', 'Superb', '2015', '165 000')
car3 = Car('Honda', 'Blue', 'Civic', '2017', '220 000')
car4 = SportCar('BMW', 'Red', 'M5', '2020', '10 000', 'V8', '430 Km/h')

print(car1 + car2 + car3 + car4)

我试图总结所有4个实例来展示它们的细节,但这不起作用 我知道如果我打印(car1+car2)并在其下打印(car3+car4)将得到我想要的东西 但我只是好奇如何使代码能够像上面那样运行,所有4个都总结了,最终我继续添加到工作中的所有内容都很好 同样,print(str(car1+car2)+'\n'+str(car3+car4))也可以工作,但仍然。。 同样,我对python还是个新手,它也是我的第一语言,谢谢:v


Tags: selfmodelreturndefdocumentationcaryearengine
1条回答
网友
1楼 · 发布于 2024-10-01 00:20:48

您的__add__函数正在返回一个str。把这一行print(car1 + car2 + car3 + car4)看作是在做:

temp = car1 + car2 # car + car = str
temp1 = temp + car3 # str + car = error

通常,当您将4个对象添加到一起时,您会隐式地执行以下操作 (((a+b)+c)+d)而不是{}的单个操作

要解决这个问题,需要使__add__函数返回一个Car对象。有很多种方法可以让你的函数实现这一点,所以我将把它留给你

或者,您也可以跳过使用__add__函数,创建一个单独的函数,该函数接受Cars的元组并将它们添加到那里

相关问题 更多 >