在Python中,构造方法是一个用来初始化新创建的对象状态的特殊方法。Python中的构造方法是__init__
。此外,Python中的"魔术方法"是Python提供的一系列特殊方法,它们都以双下划线开头和结尾,例如__init__
, __str__
, __repr__
, __add__
, __getitem__
等。
以下举例常见的魔术方法
"""
本节学习内容
掌握常用的类内置方法:类内置方法各有各的特殊功能,称之为魔术方法
1.构造方法 :__init__
2.字符串方法 :__str__
3. 小于 大于符号比较: __lt__
4.小于等于,大于等于符号比较:__le__
5.相等符号判断 :__eq__
"""#一.构造一个初始值方法
class Csrt:def __init__(self,name,age,dh):self.name=nameself.age=ageself.dh=dh#--字符串方法def __str__(self):return f"姓名:{self.name},年龄:{self.age}"# --小于大于比较方法: __lt__该方法必须传入一个otherd参数def __lt__(self,other): #该参数含义:另一个对象return self.age < other.age #该句含义:一个对象与另一个对象作比较#小于等于,大于等于比较:__le__ (其用法和__lt__一样的用法)def __le__(self, other):return self.age <=other.age#相等比较运算符:__eq__,比较两边是否相等def __eq__(self, other):return self.age==other.agereturn self.name==other.namema1=Csrt("周结轮",35,138)
ma2=Csrt("张雪友",38,130)
ma3=Csrt("李连结",32,136)
ma4=Csrt("林志赢",32,135)
print(ma1) #输出: 姓名:周结轮,年龄:35
print(ma2) #输出:姓名:张雪友,年龄:38
#PS:如果不用__str__方法,输出的是一个内存地址:<__main__.Csrt object at 0x0000020F481B96A0>#__lt__比较方法输出结果:
print(ma1<ma2) #输出:True 因为35是小于38
print(ma1>ma2) #输出:False 因为35不小于38
print(ma1<ma2<ma3) #输出:False 因为35小于38,但38不小于32#__lt__比较方法输出结果:
print(ma1<=ma2) #输出:True
print(ma1>=ma2) #输出:False#__eq__比较方法输出结果:
print(ma3.age==ma4.age) #输出:True
print(ma3==ma4) #输出:也是True,因为只要有一个相等 就返回True
print(ma3.name==ma4.name) #输出:False
print(ma3.age==ma4.age and ma3.name==ma4.name and ma3.dh==ma4.dh ) #输出:False
#PS:不使用__eq__作比较时程序不会报错,但判断的其实是内存地址,并非数值对比