Python 中的 `__xxx__` 特殊方法:介绍与使用(1)

简介

在 Python 中,__xxx__ 形式的方法被称为魔术方法或特殊方法。这些方法有特殊的名称和用途,通常用于实现某些内置操作。例如,__init__ 用于对象初始化,__add__ 用于实现加法操作。

初始化和表示

  • __init__: 初始化对象。

    python 复制代码
    class MyClass:
        def __init__(self, value):
            self.value = value
  • __repr____str__: 控制对象的字符串表示形式。

    python 复制代码
    class MyClass:
        def __repr__(self):
            return f"MyClass(value={self.value})"

算术运算

  • __add__: 实现加法。

    python 复制代码
    class MyClass:
        def __add__(self, other):
            return MyClass(self.value + other.value)
  • __sub__, __mul__, __truediv__, __floordiv__, __mod__, __pow__: 类似地,这些分别用于减法、乘法、除法、地板除、模运算和幂运算。

比较运算

  • __eq__: 实现等于比较。

    python 复制代码
    class MyClass:
        def __eq__(self, other):
            return self.value == other.value
  • __lt__, __le__, __gt__, __ge__, __ne__: 用于 <, <=, >, >=, != 比较。

容器类型模拟

  • __len__: 获取容器长度。

    python 复制代码
    class MyList:
        def __len__(self):
            return len(self.items)
  • __getitem__, __setitem__, __delitem__: 实现索引、切片和删除操作。

其他

  • __call__: 使对象可调用。

    python 复制代码
    class MyClass:
        def __call__(self, x):
            return self.value * x
  • __getattr__, __setattr__, __delattr__: 自定义属性访问。

注意事项

  • 魔术方法通常不需要直接调用,而是通过相应的内置函数或运算符触发。
  • 不是所有的魔术方法都需要实现,只有在需要特定功能时才去覆写相应的魔术方法。

总结

Python 的 __xxx__ 形式的特殊方法提供了一种非常灵活的方式来自定义对象的行为和操作。了解和掌握这些方法是提高 Python 编程水平的关键之一。

相关推荐
m0_588758482 分钟前
解决Navicat正向工程从模型建表报错怎么办_外键关联与语法解析
jvm·数据库·python
TOOLS指南7 分钟前
使用Pycharm实现数据可视化作品代码-Python应用
python·信息可视化·pycharm
2501_914245939 分钟前
如何修复宝塔面板由于inode耗尽导致无法创建文件_清理海量小文件缓存与会话目录
jvm·数据库·python
❆VE❆9 分钟前
python基础篇(一):使用vscode搭建python相关环境
开发语言·vscode·python
2401_8371638912 分钟前
WordPress后台插件隐藏策略:仅对指定管理员显示特定插件
jvm·数据库·python
qq_1898070313 分钟前
C++如何验证YAML语法格式是否正确_try-catch解析校验用法【实战】
jvm·数据库·python
晨+燕13 分钟前
JMeter中如何定位到某个具体的类来自于哪个jar包
python·jmeter·jar
zhangchaoxies13 分钟前
c++如何读取YAML格式配置文件_yaml-cpp库快速入门【详解】
jvm·数据库·python
qq_6543669818 分钟前
如何安全清理数据库中未引用的图片文件
jvm·数据库·python
一 乐20 分钟前
智慧社区|基于Python + Django智慧社区系统(源码+数据库+文档)
java·数据库·python·django·论文·毕设·智慧社区系统