python多态方法_Python类和方法_多态

现在 Time 对象有了自己的加法方法,就可以与 sum 函数来配合使用了:

$ cat c.py

#!/bin/python

class Time:

def __init__(self, hour=0, minute=0, second=0):

self.hour = hour

self.minute = minute

self.second = second

def __str__(self):

return '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)

def time_to_int(time):

minutes = time.hour * 60 + time.minute

seconds = minutes * 60 + time.second

return seconds

def int_to_time(self, seconds):

time = Time()

minutes, time.second = divmod(seconds, 60)

time.hour, time.minute = divmod(minutes, 60)

return time

def __add__(self, other):

if isinstance(other, Time):

return self.add_time(other)

else:

return self.increment(other)

def add_time(self, other):

seconds = self.time_to_int() + other.time_to_int()

return self.int_to_time(seconds)

def increment(self, seconds):

seconds += self.time_to_int()

return self.int_to_time(seconds)

def __radd__(self, other):

return self.__add__(other)

def histogram(s):

d = dict()

for c in s:

if c not in d:

d[c] = 1

else:

d[c] = d[c]+1

return d

t1 = Time(3, 30)

t2 = Time(3, 31)

t3 = Time(3, 32)

total = sum([t1, t2, t3])

print(total)

$ python3 c.py

10:33:00

总的来说,如果一个函数内的所有运算都可以处理某一类型,这个函数就适用于这一类型了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值