首页 > 其他 > 详细

【学习】操作符重载

时间:2018-08-21 16:25:51      阅读:152      评论:0      收藏:0      [点我收藏+]
2018/8/21 15:16:56

何为操作符重载?
1. 操作符重载就是为了让原有操作符能够作用于用户定义的类型,例如‘+’操作符原来只能用于两侧均为数字或字符串的情况,通过操作符重载可以实现如两个时刻相加求和(类似11:20:00 + 1:25:20)。
 1 class Time(object):
 2     def __init__(self,hour=0,minute=0,second=0):
 3         self.hour = hour
 4         self.minute = minute
 5         self.hour = hour
 6     ...
 7     def __add__(self,other):
 8         ‘‘‘以下仅作示意用,未考虑进位‘‘‘
 9         hour = self.hour + other.hour
10         minute = self.minute + other.hour
11         second = self.second + other.second
12         print(%.2d:%.2d:%.2d %(hour,minute,second))
13         
14 start = Time(11,20)
15 end = Time(1,25,20)
16 ‘‘‘当运行+运算符会自动调用Time类中的__add__方法‘‘‘
17 start + end
 
以上对 ‘+‘ 运算符进行了重新的定义,让其能够对Time类进行操作,接下来再复杂一点。
2. 若左右两侧均为Time类,则按照上面方法计算;若其中右侧定为某时间间隔呢,这里就涉及到数据类型的判断。
 1 class Time(object):
 2     def __init__(self,hour=0,minute=0,second=0):
 3         self.hour = hour
 4         self.minute = minute
 5         self.second = second
 6     ...
 7     def __add__(self,other):
 8         ‘‘‘内置函数isinstance判断数据类型‘‘‘
 9         if isinstance(other,Time):
10             ‘‘‘类中调用类的函数不需要self参数‘‘‘
11             self.add_time(other)
12         if isinstance(other, int):
13            self.add_interval(other)
14     def add_time(self,other):       
15         ‘‘‘以下仅作示意用,未考虑进位‘‘‘
16         hour = self.hour + other.hour
17         minute = self.minute + other.minute
18         second = self.second + other.second
19         print(%.2d:%.2d:%.2d %(hour,minute,second))
20     def add_interval(self,other):       
21         ‘‘‘以下仅作示意用,未考虑进位‘‘‘
22         hour = self.hour
23         minute = self.minute
24         second = self.second + other
25         print(%.2d:%.2d:%.2d %(hour,minute,second))
26         
27 start = Time(11,20)
28 end = Time(1,25,20)
29 ‘‘‘当运行+运算符会自动调用Time类中的__add__方法‘‘‘
30 start + end
31 >>>12:45:20
32 end1 = 20
33 ‘‘‘当运行+运算符会自动调用Time类中的__add__方法‘‘‘
34 start + end1
35 >>>11:20:20
 
3.总结
以上介绍了操作符重载的基本用法,实际的用法会有更多。以下链接列出支持操作符重载的操作符以及其在类中所对应方法的名称(必须严格按照__X__的格式,否则无法识别)

【学习】操作符重载

原文:https://www.cnblogs.com/i-orange/p/9512025.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!