博客
关于我
python进阶(5):魔术方法篇(1)
阅读量:803 次
发布时间:2023-03-05

本文共 1688 字,大约阅读时间需要 5 分钟。

Python类中的魔法方法实例说明

在Python中,魔法方法(Magic Methods)是类可以实现的特殊方法,用于定义类的行为。当类对象需要执行特定的操作时,例如比较、转换为字符串或其他操作时,魔法方法能提供自定义的行为。

以下是几个常用的魔法方法及其应用:

1. str:转换为字符串

  • 作用:定义当对象转换为字符串时的行为。
  • 示例
class Student:
def __init__(self, name, age, tel):
self.name = name
self.age = age
self.tel = tel
def __str__(self):
return f"Student({self.name}, {self.age}, {self.tel})"
stu = Student("帅哥", 31, "18623039321")
print(stu) # 输出: Student(帅哥, 31, 18623039321)

2. lt:小于符号比较

  • 作用:定义对象之间的“<”比较运算符。
  • 示例
class Student:
def __init__(self, name, age, tel):
self.name = name
self.age = age
self.tel = tel
def __lt__(self, other):
return self.age < other.age
stu1 = Student("帅哥", 31, "18623039321")
stu2 = Student("帅哥w", 32, "18623039321")
print(stu1 < stu2) # 输出: True
print(stu2 < stu1) # 输出: False

3. le:小于等于符号比较

  • 作用:定义对象之间的“<=”比较运算符。
  • 示例
class Student:
def __init__(self, name, age, tel):
self.name = name
self.age = age
self.tel = tel
def __le__(self, other):
return self.age <= other.age
stu1 = Student("帅哥", 31, "18623039321")
stu2 = Student("帅哥w", 32, "18623039321")
print(stu1 <= stu2) # 输出: True
print(stu2 <= stu1) # 输出: False

4. eq:相等比较

  • 作用:定义对象之间的“=”比较运算符。
  • 示例
class Student:
def __init__(self, name, age, tel):
self.name = name
self.age = age
self.tel = tel
def __eq__(self, other):
return self.age == other.age
stu1 = Student("帅哥", 31, "18623039321")
stu2 = Student("帅哥w", 31, "18623039321")
print(stu1 == stu2) # 输出: True

注意事项

  • 不实现魔法方法:如果不实现__eq__、__lt__等方法,对象比较将基于内存地址,这通常不符合预期。
  • 自定义逻辑:在魔法方法中,应根据具体需求编写逻辑,确保比较和转换符合实际业务规则。

通过以上方法,可以更灵活地定义类的行为,满足不同场景的需求。

转载地址:http://ipafk.baihongyu.com/

你可能感兴趣的文章
pytest 的 request fixture:实现个性化测试需求
查看>>
Pytest+Allure 接口自动化测试平台开发实战
查看>>
pytest+allure使用动态级别,参数化severity
查看>>
Pytest+Unittest+Git+Jenkins企业级CICD自动化测试平台建设方案
查看>>
Pytest+Yaml 数据驱动测试用例
查看>>
pytest-base-url插件之配置可选的项目系统URL
查看>>
pytest-xdist 进行多进程并发测试!
查看>>
pytest-xdist:远程多主机 - 分布式运行自动化测试
查看>>
Pytest中doctests的测试方法应用!
查看>>
Pytest中进行测试环境切换:pytest_addoption!
查看>>
pytest利用request fixture实现个性化测试需求详解
查看>>
pytest单元测试实战
查看>>
pytest单元测试框架
查看>>
Pytest参数详解 — 基于命令行模式
查看>>
pytorch cv2 plt transforms pause waitforbuttonpress一个完整的图片处理程序
查看>>
pytest学习和使用 - Pytest用例执行结果有哪几种状态?
查看>>
pytest实战技巧之参数化应用!
查看>>
Pytest实践:Python测试技术基础知识!
查看>>
Pytest接口自动化测试实战演练
查看>>
Pytest插件pytest-selenium-让自动化测试更简洁
查看>>