一,重写内置函数
在python中,以双下划线开头,双下划线结尾的是系统定义的成员,我们将其重写,就可以改变其行为。
__str__函数在print类对象时,可以打印其返回内容(将自定义对象转为字符串)
__int__,__float__等函数有相似功能,不常用
算数运算符重载:
方法名 | 运算符和表达式 | 说明 |
---|---|---|
__add__(self,rhs) | self+rhs | 加法 |
__sub__(self,rhs) | self-rhs | 减法 |
__mul__(self,rhs) | self*rhs | 乘法 |
__truediv__(self,rhs) | self/rhs | 除法 |
__floordiv__(self,rhs) | self//rhs | 地板除 |
__mod__(self,rhs) | self%rhs | 求余 |
__pow__(self,rhs) | self**rhs | 求幂 |
自定义对象可以使用算数运算符
复合运算符
例如+=,在使用普通运算符函数也可以实现其功能
其在可变对象运算时,在原有基础上修改
在不可变对象运算时,会创建新对象
自定义对象为可变对象,所以需要复合运算符,此时返回原数据
函数名为在算数运算符函数名前加 i 就可以
比较运算符
方法名 | 运算符和复合赋值语句 | 说明 |
---|---|---|
__lt__(self,rhs) | self<rhs | 小于 |
__le__(self,rhs) | self<=rhs | 小于等于 |
__gt__(self,rhs) | self>rhs | 大于 |
__ge__(self,rhs) | self>=rhs | 大于等于 |
__eq__(self,rhs) | self==rhs | 等于 |
__ne__(self,rhs) | self!=rhs | 不等于 |
最常用的内置函数工具
当重写自定义类的比较运算符内置函数(主要为eq与lt)后,可以使用类内的函数,排序,计数等
列表功能函数的本质也是调用比较等基本函数
== 按eq比较
is 按地址比较
二,重写自定义函数
class Person
def __init__(self,name):
self.name=name
def go_to(self,position,vehicle):
Print(self.name,”去”,position)
#先确定用法
#编程时调用父类函数
vehicle。transport()
class Vehicle:
def transport(self):
Pass
class Car(Vehicle):
#重写父类函数
def transport(self):
print(“111”)
Class airplane(Vehicle):
def transport(self):
Print(“222”)
定义:子类实现了父类中相同的方法(方法名,参数),在调用父类方法时,实现子类方法
快捷键:ctrl+o
作用:在继承的基础上,体现类型的个性(一个行为有不同实现)。增强程序灵活性