找到某个属性最高的实例

2024-09-30 14:22:52 发布

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

这是汽车类

我想找到那辆拥有最多cc的车和它的brand是什么

  class car:

    category = 'auto'

    def __init__(self,brand,color,cc):
        self.brand = brand
        self.color = color
        self.cc = cc

def fastest(*args):
        return max(args)



nissanCar = car("Nissan","red",1800)
MercendesCar = car("Mercendes","gold",1600)
LamborghiniCar = car("Lamborghini","green",3000)

print(f"The fastest car is {fastest(nissanCar.cc,MercendesCar.cc,LamborghiniCar.cc)} cc and the its brand is ")

这将返回:

The fastest car is 3000 cc and its brand is

怎么知道那辆车是什么牌子的


Tags: andtheselfisdefargscarcolor
2条回答

目前你的'faster'函数只是包装了内置的'max'函数。这并不是很有用,因为它实际上会降低代码的可读性,只看名称你会认为它做了一些更具体的事情。如果你只想返回最高的抄送你可以直接打电话给马克斯

然而,这仍然是你的问题。只要找到maxcc,就失去了该cc值与car类的特定实例的关联。这里最好的解决方案可能是修改car类,以便可以直接对类对象进行排序

class car:
    category = 'auto'

    def __init__(self, brand, color, cc):
        self.brand = brand
        self.color = color
        self.cc = cc

    def __lt__(self, other):
        return self.cc < other.cc


NissanCar = car("Nissan","red",1800)
MercedesCar = car("Mercendes","gold",1600)
LamborghiniCar = car("Lamborghini","green",3000)

fastest_car = max([NissanCar, MercedesCar, LamborghiniCar])

print(fastest_car.brand, fastest_car.cc)

我已经更新了你的代码,所以它可以显示多辆最快的车。最终可能会有成吨的汽车,而且可能不止一辆拥有相同的cc

如果你有任何问题,请在评论中告诉我

欢迎使用堆栈溢出

class car:

    category = 'auto'

    def __init__(self,brand,color,cc):
        self.brand = brand
        self.color = color
        self.cc = cc

def fastest(cars):
        max_cc = max([car.cc for car in cars])
        fastest_cars = [car for car in cars if car.cc == max_cc]
        return fastest_cars



NissanCar = car("Nissan","red",1800)
MercedesCar = car("Mercendes","gold",1600)
LamborghiniCar = car("Lamborghini","green",3000)

fastest_cars = fastest([NissanCar, MercedesCar, LamborghiniCar])
for fastest_car in fastest_cars:
    print(f"The fastest car is {fastest_car.brand} with {fastest_car.cc} cc")

相关问题 更多 >