Python编程基础18:运算符重载
【摘要】
文章目录
零、本讲学习目标一、运算符重载概述二、加法运算重载符(一)概述(二)案例演示( 三)课堂练习
三、索引与切片重载(一)__getitem__方法1、概述2、方法代码3、案例演示
...
文章目录
零、本讲学习目标
- 掌握运算符重载的用法
- 会定制对象字符串的形式
一、运算符重载概述
- 运算符重载是通过实现特定的方法使类的实例对象支持Python的各种内置操作 。例如:
+
运算符是类里提供的__add__
这个函数,当调用+
实现加法运算的时候,实际上是调用了__add__
方法。
方法 | 说明 | 何时调用方法 |
---|---|---|
__add__ |
加法运算 | 对象加法:x+y,x+=y |
__sub__ |
减法运算 | 对象减法:x-y,x-=y |
__mul__ |
乘法运算 | 对象乘法:xy,x=y |
__div__ |
除法运算 | 对象除法:x/y,x/=y |
__getitem__ |
索引,分片 | x[i]、x[i:j]、没有__iter__的for循环等 |
__setitem__ |
索引赋值 | x[i]=值、x[i:j]=序列对象 |
__delitem__ |
索引和分片删除 | del x[i]、del x[i:j] |
二、加法运算重载符
(一)概述
- 加法运算是通过调用
__add__
方法完成重载的,当两个实例对象执行加法运算时,自动调用__add__
方法。
(二)案例演示
- 编写程序 - 演示加法运算符重载.py
- 运行程序,查看结果
- 如果两个数组长度不相等,那么就会抛出异常
( 三)课堂练习
- 修改案例里的Array类,实现减法、乘法和除法运算重载
三、索引与切片重载
- 跟索引相关的重载方法有三个:
__getitem__
、__setitem__
、__delitem__
(一)__getitem__方法
1、概述
- 在对实例对象执行索引、切片或者for迭代操作时,会自动调用
__getitem__
方法。
2、方法代码
# 定义索引、分片运算符重载方法
def __getitem__(self, index):
return self.data[index]
3、案例演示
- 编写程序 - 演示索引切片重载.py
- 运行程序,查看结果
(二)__setitem__方法
1、概述
- 通过赋值语句给索引或者分片赋值时,调用
__ setitem __
方法实现对序列对象的修改。
2、方法代码
def __setitem__(self, index, value):
self.data[index] = value
3、案例演示
- 编写程序 - 演示索引切片赋值重载.py
- 运行程序,查看结果
(三)__delitem__方法
1、概述
- 当调用del方法时,实质上会调用
__delitem__
方法实现删除操作。
2、方法代码
def __delitem__(self, index):
del self.data[index]
3、案例演示
- 编写程序 - 演示索引切片删除重载.py
- 运行程序,查看结果
四、重载类实例字符串表示
(一)__str__方法重载
1、概述
- __str__方法,会 return一个字符串,当调用print函数,传入一个类的实例,这个类里面定义了__str__方法,此时就会调用该函数,给出类实例的字符串表示。
2、重载案例演示
- 编写程序 - 演示__str__重载.py
- 运行程序,查看结果
- 说明:因为Student类只重载了__str__方法,没有重载__repr__方法,所以print(student)与print(str(student))一样的效果,调用__str__方法显示对象的字符串内容,但是print(repr(student))就无法调用__str__方法,只是显示对象的内存地址。
(二)__repr__方法重载
1、概述
- __repr__方法,会 return一个字符串,当调用print函数,传入一个类实例,这个类里面定义了__repr__方法,此时就会调用该函数,给出类实例的字符串表示。
2、重载案例演示
- 编写程序 - 演示__repr__重载.py
- 运行程序,查看结果
- 说明:因为Student类只重载了__repr__方法,没有重载__str__方法,所以print(student)、print(str(student))与print(repr(student))一样的效果,调用__repr__方法显示对象的字符串内容。
(三)__str__方法与__repr__方法同时重载
1、概述
- 如果一个类同时重载了__str__和__repr__方法,那么print(实例)和print(str(实例))都是调用__str__方法显示对象的字符串内容,print(repr(实例))调用__repr__方法显示对象的字符串内容。
2、重载案例演示
- 编写程序 - 演示__str__与__repr__同时重载.py
- 运行程序,查看结果
文章来源: howard2005.blog.csdn.net,作者:howard2005,版权归原作者所有,如需转载,请联系作者。
原文链接:howard2005.blog.csdn.net/article/details/122693878
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)