欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > Python常用魔术方法 (学习笔记)

Python常用魔术方法 (学习笔记)

2024/11/16 6:42:23 来源:https://blog.csdn.net/qq_48076747/article/details/143798111  浏览:    关键词:Python常用魔术方法 (学习笔记)

文章目录

  • 一、魔术方法是什么?
  • 二、使用步骤
    • 1.__ str __(self):
    • 2.__ lt__(self):
    • 3. __ le __(self):
    • 4. __ eq __(self):
  • 总结


一、魔术方法是什么?

在Python中,魔术方法(也称为特殊方法或双下划线方法)是一类具有特殊用途的方法,它们的名字以双下划线(__)开头和结尾。这些方法允许对象自定义其行为,例如定义对象的创建、初始化、显示、比较等。以下是Python中一些常用的魔术方法及其用途:

二、使用步骤

1.__ str __(self):

原本我们直接打印stu1会是对象地址值,有了这个__str__()会直接返回我们键值对
代码如下(示例):

class Student:name = Noneage = Nonegender = Nonedef __init__(self, name, age, gender):self.name = nameself.age = ageself.gender = genderdef __str__(self):return f'{self.name}, {self.age}, {self.gender}'stu1 = Student('张三',22,'男')# 输出
print(stu1)  #如果没有魔术方法会打印: <__main__.Student object at 0x00000122F74551C0>
print(stu1)  #有魔术方法: 张三, 22,

2.__ lt__(self):

这个是用于比较两个对象大于或者小于问题:用了这个__lt__方法就会自定义比较的值来判断两个对象是否相同
代码如下(示例):

class Student:name = Noneage = Nonegender = Nonedef __init__(self, name, age, gender):self.name = nameself.age = ageself.gender = genderdef __lt__(self, other):return self.age < other.agestu1 = Student('张三',18,'男')
stu2= Student("张安",22,"男")
print(stu1 > stu2) # 输出: False

3. __ le __(self):

这个是用于比较两个对象大于等于或者小于等于问题:用了这个__le__方法就会自定义比较的值来判断两个对象是否相同

class Student:name = Noneage = Nonegender = Nonedef __init__(self, name, age, gender):self.name = nameself.age = ageself.gender = genderdef __le__(self, other):return self.age <= other.agestu1 = Student('张三',18,'男')
stu2= Student("张安",22,"男")
print(stu1 >= stu2)  # 输出  False

4. __ eq __(self):

这个是用于比较两个对象大于等于或者小于等于问题:用了这个__le__方法就会自定义比较的值来判断两个对象是否相同

class Student:name = Noneage = Nonegender = Nonedef __init__(self, name, age, gender):self.name = nameself.age = ageself.gender = genderdef __eq__(self, other):return self.age == other.agestu1 = Student('张三',18,'男')
stu2= Student("张安",22,"男")print(stu1 == stu2) # 输出 False

总结

以上就是今天要讲的内容,本文仅仅简单介绍了Python中常用魔术方法的使用,通过这些魔术方法,你可以控制对象的行为,使其更符合你的需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com