概述
Python学习笔记#魔法方法:算术运算
个人认为,魔法方法就是改写原本内置函数或标志的定义,使得其具有双重含义,在以后方便调用,发挥设计好的用途
运用示例
>>>class New_int(int):#创建一个类继承整形
def __add__(self,other):#用魔法方法对add的含义进行重写
return int.__sub__(self,other)#重写为减法,注意这里的int很重要,不能直接写成self-other,否则会出现无限递归
def __sub__(self,other):
return int.__add__(self,other)
>>> a = New_int(2)
>>> b = New_int(3)
>>> a + b#在检测到+号会自动调用重写后add的定义进行计算
-1
__radd__这种类型为反运算,即:
原本:a + b
反运算:b + a
1.反运算只有在运算符左右类型不同,且左边没用相应运算方法(类定义)时被调用
2.如果右操作数的类型是左操作数类型的子类,并且该子类提供了操作的反运算,则该方法将在左操作数的运算之前被调用。这种操作是为了允许子类越过(override)父类的运算
示例:
>>> class Nint(int):
def __radd__(self,other):
return int.__sub__(self,other)
>>> a =Nint(2)
>>> b =Nint(3)
>>> a + b
5
>>> 1 + b
2
魔法方法的简单使用实例
time模块的主要函数
import time as t
class MyTimer():
def __str__(self):
return self.prompt
__repr__ = __str__
#开始计时
def start(self):
self.start = t.localtime()
print('计时开始')
#停止计时
def stop(self):
self.stop = t.localtime()
print('计时结束')
self._calc()
#内部方法,计算运行时间
def _calc(self):#加下划线表明该类函数不是API的一部分,所以该函数只有类和子类能够访问调用
self.lasted = []
self.prompt = '总共运行了'
for index in range(6):#for i in range 的作用就是将range中的值依次赋值给i,range(x,y,z)中x是起始值,y是结束值但实际值是y-1,z是步进长度
self.lasted.append(self.stop[index] - self.start[index])
self.prompt += str(self.lasted[index])
print(self.prompt)
最后
以上就是冷静山水为你收集整理的Python学习笔记02#魔法方法:算术运算的全部内容,希望文章能够帮你解决Python学习笔记02#魔法方法:算术运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复