(这是一个与学习相关的问题,所以任何关于我为什么应该做或不做任何事情的建议,以及让这些事情变得更好的推荐资源,都非常受欢迎。)
我正在尝试在 python 中学习 OOP,并完成了一个简单的“时间”类,如下所示:
class Time(object):
"""A time representation."""
def __init__(self, hours=0, minutes=0, seconds=0):
self.hours = hours
self.minutes = minutes
self.seconds = seconds
def __int__(self):
return self.hours * 3600 + self.minutes * 60 + self.seconds
现在,__ int __方法让我可以从我的“时间”实例中获取一个 int,它表示我执行 . 时的时间(但以秒为单位)int(Time(3, 4, 5))
。顺便说一句,我觉得这太棒了。但是,为了使用它,很高兴知道如何让“int”有一个返回“Time”对象的新方法,所以3643.time()
可以做类似的事情。
为什么?由于各种原因:
因为这样我现在就知道什么对我来说就像黑魔法。(这些强调的事情使事情发生......以及相关的东西)
因为我不知道为什么我不应该。(所以请告诉我)
我想我可以在任何课程之外做类似以下的事情:
def time(seconds):
"""Return an HH:MM:SS stamp of "seconds", where "seconds" should be an int."""
hours, minutes = 0, 0
if seconds >= 3600:
hours, seconds = divmod(int, 3600)
if seconds >= 60:
minutes, seconds = divmod(int, 60)
return "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
但这似乎与这些对象并没有足够的关系,似乎没有那么多面向对象......所以,我认为也许有更好的方法来处理这种事情。