1 回答
TA贡献1853条经验 获得超18个赞
我已经更改了您的代码以显示如何返回实例:
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.
编辑: 如果不允许使用 lambda,则必须遍历对象。这是一个没有函数 lambda 的实现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
编辑 2: 正如@HampusLarsson 所说,您还可以定义一个返回属性的函数,age并使用它来防止使用 lambda。这里有一个版本:
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)
添加回答
举报