ITPub博客

首页 > 数据库 > 数据库开发技术 > Python OOP 中最常见的 20 种魔术方法

Python OOP 中最常见的 20 种魔术方法

原创 数据库开发技术 作者:jackzhang 时间:2024-06-21 06:30:00 0 删除 编辑

我准备了下面的图表,列出了 Python 面向对象编程(OOP)中最常用的 20 种魔术方法:

据该领域的行业专家经验,这些可能是大多数使用 OOP 的 Python 项目中所需要的仅有的 20 种魔术方法。

从语法上讲,它们以双下划线作为前缀和后缀,例如 __len__, __str__等等。这就是为什么它们也被称为“Dunder 方法”的原因—— Double Underscore 的缩写。

以下是对每个魔术方法的简要介绍。

1. __new__

  • 此方法在 __init__ 之前调用,为对象分配内存。

  • 大多数情况下,我们用不到它。

  • 然而,有时,我会用它来定义检查,并且仅在满足某些条件时分配内存。

  • 另一个常见用法是定义单例类 —— 只有一个对象的类。

2. __init__

  • 此列表中最常见。

  • 在内存分配之后调用它来为对象的属性赋值。

3. __str__

  • 执行 print(obj) 输出的是对象的内存地址,是不可解释的。

  • 定义这个方法让我们可以以可读的格式打印对象。

4. __int__

当我们执行 → int(obj) 时调用。

5. __len__

当我们执行 → len(obj) 时调用。

6. __call__

  • 当类对象作为函数调用时调用 → obj()。

  • 我们之前在这里讨论过它。

7. __getitem__

当对象被索引时调用 → obj[key]。

8. __setitem__

当对象被索引并且设置值时调用 → obj[key]=value。

9. __delitem__

当对象的索引被删除时调用 → del obj[key]。

10. __contains__

当使用 in 运算符 → item in obj 时调用。

11. __bool__

当对象在布尔上下文中使用时调用→ if obj or bool(obj)。

12. __iter__

当我们迭代对象时调用 → for x in obj。

13. __eq__

当使用 == 运算符比较两个对象时调用 → obj1 == obj2。

14. __ne__

当使用 != 运算符比较两个对象时调用 → obj1 != obj2。

15. __gt__

  • 当使用 > 运算符比较两个对象时调用→ obj1 > obj2。

  • 除了 __gt__ 之外,我们还有:

    • __lt__:小于

    • __le__:小于或等于

    • __ge__:大于或等于

16. __add__

当两个对象相加时调用 → obj1 + obj2。

17. __mul__

当两个对象相乘时调用 → obj1 * obj2。

18. __abs__

当我们计算对象的绝对值时调用:abs(obj)。

19. __neg__

当在对象 → -obj 上使用一元运算符 -(减号)时调用。

20. __invert__

当使用 ~(波浪号)运算符反转对象 → ~obj 时调用。

结论

通过上述内容,相信现在你对 Python 中最常见的魔法方法及其使用方法已经有一定了解。

此外,如果您真的想掌握 Python OOP,最好学习并掌握 Python 描述符,后续我们会专门讲到该主题。关注我,及时获取最新内容。

我发现它们在减少工作量和代码冗余方面有很大帮助,同时也使得整个实现更加优雅。

文末小问题👇

我是否遗漏了任意一个常见的魔术方法?如果有,是哪一个?欢迎留言告诉我📓

感谢你的阅读🧑‍🤝‍🧑


推荐阅读👇👇👇

10个Python自动化脚本,简化日常工作任务,看看有没有适合你的!

Python自动化:10个令人惊叹的自动化脚本,拿来即用,总有一款适合你!

Python高级编程:Functools模块的8个高级用法,强烈建议添加到你的开发工具箱中!

成为Python高手:掌握这5个核心技能,迈入编程精英行列!

Python高级技术:10个显著优化你代码的Python OOP 技术

- END -

🌟 喜欢这篇文章吗?给个赞支持一下吧!🌟

如果你发现今天的内容对你有帮助,不妨点个赞并关注我,第一时间接收更多关于Python、数据分析和机器学习的深入分析和最新趋势。我们一起探索数据的力量,解锁AI的潜能。你的每一次互动都是对我的极大鼓励,也是我们共同成长的动力!

👇👇👇 关注并开启星标提醒,让知识与技能的火花不断在你的职业道路上燃烧吧!

原文作者:数据派探险家;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-12-19

  • 博文量
    119
  • 访问量
    55955