自学内容网 自学内容网

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


一、魔术方法是什么?

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

二、使用步骤

1.__ str __(self):

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

class Student:
    name = None
    age = None
    gender = None

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def __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 = None
    age = None
    gender = None

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
        
    def __lt__(self, other):
        return self.age < other.age

stu1 = Student('张三',18,'男')
stu2= Student("张安",22,"男")
print(stu1 > stu2) # 输出: False

3. __ le __(self):

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

class Student:
    name = None
    age = None
    gender = None

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def __le__(self, other):
        return self.age <= other.age

stu1 = Student('张三',18,'男')
stu2= Student("张安",22,"男")
print(stu1 >= stu2)  # 输出  False

4. __ eq __(self):

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

class Student:
    name = None
    age = None
    gender = None

    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def __eq__(self, other):
        return self.age == other.age

stu1 = Student('张三',18,'男')
stu2= Student("张安",22,"男")

print(stu1 == stu2) # 输出 False

总结

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


原文地址:https://blog.csdn.net/qq_48076747/article/details/143798111

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!