Python全系列 教程
3567个小节阅读:5931.6k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Python的运算符实际上是通过调用对象的特殊方法实现的。
xxxxxxxxxx
a = 20
b = 30
c = a+b
d = a.__add__(b)
print("c=",c)
print("d=",d)
运算结果:
xxxxxxxxxx
c= 50
d= 50
常见的特殊方法统计如下:
方法 | 说明 | 例子 |
---|---|---|
__init__ | 构造方法 | 对象创建和初始化:p = Person() |
__del__ | 析构方法 | 对象回收 |
__repr__ ,__str__ | 打印,转换 | print(a) |
__call__ | 函数调用 | a() |
__getattr__ | 点号运算 | a.xxx |
__setattr__ | 属性赋值 | a.xxx = value |
__getitem__ | 索引运算 | a[key] |
__setitem__ | 索引赋值 | a[key]=value |
__len__ | 长度 | len(a) |
每个运算符实际上都对应了相应的方法,统计如下:
运算符 | 特殊方法 | 说明 |
---|---|---|
+ | __add__ | 加法 |
- | __sub__ | 减法 |
< <= == | __lt__ __le__ __eq__ | 比较运算符 |
> >= != | __gt__ __ge__ __ne__ | 比较运算符 |
| ^ & | __or__ __xor__ __and__ | 或、异或、与 |
<< >> | __lshift__ __rshift__ | 左移、右移 |
* / % // | __mul__ __truediv__ __mod__ __floordiv__ | 乘、浮点除、模运算(取余)、整数除 |
** | __pow__ | 指数运算 |
我们可以重写上面的特殊方法,即实现了“运算符的重载”。
xxxxxxxxxx
#测试运算符的重载
class Person:
def __init__(self,name):
self.name = name
def __add__(self, other):
if isinstance(other,Person):
return "{0}--{1}".format(self.name,other.name)
else:
return "不是同类对象,不能相加"
def __mul__(self, other):
if isinstance(other,int):
return self.name*other
else:
return "不是同类对象,不能相乘"
p1 = Person("高淇")
p2 = Person("高希希")
x = p1 + p2
print(x)
print(p1*3)
运算结果:
xxxxxxxxxx
高淇--高希希
高淇高淇高淇
实时效果反馈
1. 关于运算符和运算符的重载,说法错误的是:
A Python的运算符实际上是通过调用对象的特殊方法实现的
B 运算符+
对应的特殊方法是:__add__()
C __init__
是构造方法,用于对象初始化
D __del__
是析构方法,用于对象初始化
答案
1=>D