python中用特殊方法定制类

#!/usr/bin/python

class Time60(object):
       def __init__(self,hr,min):
               self.hr = hr
               self.min = min
       def __str__(self):
               return '%d:%d' % (self.hr,self.min)

       __repr__ = __str__     #str()内建函数对人的输出是很友好的
       def __add__(self,other):
               return self.__class__(self.hr + other.hr,self.min + other.min)

       #这里我们很明显是需要新建一个对象的,正常情况下,新建一个对象是通过调用类来创建       的,现在是在类中,不能直接调用类名,而是使用self的__class__属性,即实例化的self的那个类来调用它,也就是说self.__class__和Time60是一个东西

       def __sub__(self,other):
               return self.__class__(self.hr - other.hr,self.min - other.min)
       

        def __iadd__(self,other):   #这个特殊方法的定义实现了原位加法,不然是不可                                                                       self.hr+other.hr 之后值直接赋值给self.hr的
               self.hr += other.hr
               self.min += other.min
               return self

mon = Time60(10,30)
min = Time60(11,10)
mon + min
print mon,min
print mon + min

mon - min

你可能感兴趣的:(return,python,新建,友好)