在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=name
self.age=age
self.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.age
return self.name==other.name
ma1=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__作比较时程序不会报错,但判断的其实是内存地址,并非数值对比