首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >面向对象编程python

面向对象编程python
EN

Stack Overflow用户
提问于 2013-03-17 04:13:52
回答 5查看 317关注 0票数 0

我需要实现一个名为of的类,它接受一个__init__(self,names,fastest_time)和另一个名为fastest_time的方法,它将显示最快运动员的名称和时间:

到目前为止,我有这样的想法:

代码语言:javascript
运行
复制
class Athlete:
    def __init__(self,names,ftime):
        self.name=names
        self.fastest=ftime
    def fastest_athlete(self):


names=(['sara','jam','mary'])
times=([90,50,75])
a=Athlete(name,ftime)
a.fastest_athlete()

问题:不知道是否需要遍历数组名称“times”?不知道如何实现fastest_time..HELP方法

EN

回答 5

Stack Overflow用户

发布于 2013-03-17 04:21:22

您应该遍历数组以创建Athlete

代码语言:javascript
运行
复制
>>>Athletes = [Athlete(name, time) for name, time in zip(names, times)]    
>>>Athletes[0].name
sara
>>>Athletes[1].name
jam

要找到跑得最快的运动员,你可以使用maxmin函数。

代码语言:javascript
运行
复制
>>>min(Athletes, key = lambda a : a.fastest)

但您应该注意,min()是在包含Athlete的阵列上执行的,而不是在Athlete本身上执行的。如果你想找到最快的类,你可能需要像AthleteContainer Athlete这样的类。

票数 2
EN

Stack Overflow用户

发布于 2013-03-17 04:30:42

因为最快的运动员是不依赖于具体实例的东西,所以它更适合作为静态方法:

代码语言:javascript
运行
复制
class Athlete:
    # ...
    @staticmethod
    def fastest_athlete(athletes):
        return reduce(lambda x, y: x if x.fastest < y.fastest else y, athletes)

# ...
athletes = [Athlete(name, time) for name, time in zip(names, times)] 
fastest = Athlete.fastest_athlete(athletes)
票数 1
EN

Stack Overflow用户

发布于 2013-03-17 04:36:52

如果您希望fastest_athlete成为运动员类的一部分,那么您的Athlete类应该能够访问所有运动员。

fastest_athlete会返回一个列表,因为可能会有更多的运动员跑得最好。

代码语言:javascript
运行
复制
athletes=[] # stores all athletes 

class Athlete:
    def __init__(self,names,ftime):
        self.name=names
        self.fastest=ftime
        athletes.append(self)
    def fastest_athlete(self):
        besttime= min([athlete.fastest for athlete in athletes])
        return [athlete.name for athlete in athletes if athlete.fastest==besttime]



names=(['sara','jam','mary'])
times=([90,50,75])

for a, t in zip(names, times):
    last_athlete=Athlete(a, t)

print last_athlete.fastest_athlete()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15454221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档