Я изменил ваш код, чтобы показать, как вы можете возвращать экземпляры:
class Dog:
# constructor method
def __init__(self, name, age):
self.name = name
self.age = age
# three class instance declarations
maxx = Dog("Maxx", 2)
rex = Dog("Rex", 10)
tito = Dog("Tito", 5)
# return the dog with the max age
def oldest_dog(dog_list):
return max(dog_list, key=lambda x: x.age) # use lambda expression to access the property age of the objects
# input
dogs = [maxx, rex, tito]
# I changed this as per instructor's notes.
dog = oldest_dog(dogs) # gets the dog instance with max age
print(f"The oldest dog is {dog.age} years old.")
Вывод:
The oldest dog is 10 years old.
EDIT: Если вам не разрешено используйте лямбда, тогда вам нужно перебирать объекты. Здесь реализация без лямбда функции oldest_dog(dog_list)
:
# return max age instance
def oldest_dog(dog_list):
max_dog = Dog('',-1)
for dog in dog_list:
if dog.age > max_dog.age:
max_dog = dog
EDIT 2: Как заявил @HampusLarsson, вы также можете определить функцию, которая возвращает свойство age
, и использовать его чтобы предотвратить использование лямбда-выражений. Вот версия:
def get_dog_age(dog):
return dog.age
# return max age instance
def oldest_dog(dog_list):
return max(dog_list, key= get_dog_age)