Python学习笔记02#魔法方法:算术运算

本文介绍了Python中的魔法方法,通过示例展示了如何使用`__add__`和`__sub__`重载加减运算符,实现自定义类的算术运算。同时,给出了一个`MyTimer`类的示例,利用魔法方法`__str__`和`__repr__`实现计时功能,展示如何开始和停止计时并计算运行时间。
摘要由CSDN通过智能技术生成

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值