【每日一练】python类的构造方法以及常用的魔术方法详细讲解

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


是不是很有意思,动手试一试吧
-----------类中其实还有很多这种魔术方法,这里就不一一介绍,随后用的时再作详细讲解-----------
 
  • 25
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值