077、Python 关于魔术方法

概念:

魔术方法(Magic Methods),也叫魔法方法。是指有特殊用途和意义的方法。

定义:

方法在定义时,方法名使用双下划线开头和结尾。

一些常见的魔术方法:

  1. 初始化方法:
    • __init__(self, ...):初始化方法,在调用构造器语法创建对象的时候会被自动调用。
  2. 字符串表示方法:
    • __str__(self):返回对象的“非正式”或可打印的字符串表示,在调用print() 函数输出对象时会自动调用。
    • __repr__(self):返回对象的“官方”字符串表示,在把对象放到容器中,用print() 函数输出容器时会自动调用。
  3. 容器类型相关方法:
    • __len__(self):返回容器中的元素数量,在使用 len(obj) 函数时自动调用。
    • __getitem__(self, key):返回容器中指定位置的元素,使用 obj[key] 语法访问元素时时自动调用。
    • __setitem__(self, key, value):设置容器中指定位置的元素的值,使用 obj[key] = value 语法设置元素值时自动调用。
    • __delitem__(self, key):删除容器中指定位置的元素,使用 del obj[key] 语法删除元素时自动调用。
    • __iter__(self):返回容器的迭代器,使用 iter(obj) 函数或在循环中迭代对象时自动调用
    • __contains__(self, item):如果容器包含指定的元素,则返回True,使用 item in obj 语法时自动调用。
  4. 运算符重载方法:
    • __add__(self, other):实现加法操作,使用 + 运算符时自动调用。(后面类似)
    • __sub__(self, other):实现减法操作。
    • __mul__(self, other):实现乘法操作。
    • __truediv__(self, other):实现除法操作。
    • __floordiv__(self, other):实现整除操作。
    • __mod__(self, other):实现取模操作。
    • __pow__(self, other, modulo=None):实现幂运算。
  5. 上下文管理协议方法:
    • __enter__(self):进入上下文管理器的运行时自动调用。
    • __exit__(self, exc_type, exc_val, exc_tb):退出上下文管理器的运行时自动调用。
  6. 属性访问控制方法:
    • __getattr__(self, name):当尝试访问一个不存在的属性时调用。
    • __setattr__(self, name, value):尝试设置属性时调用。
    • __delattr__(self, name):尝试删除属性时调用。
  7. 其他常用魔术方法:
    • __call__(self, *args, **kwargs):允许一个类的实例像函数一样被调用,在对象被当作函数调用时调用。
    • __new__(cls, *args, **kwargs):在创建对象时首先调用,用于控制对象的创建过程,在调用构造器语法创建对象之前,通常用于实现单例模式等高级功能。
    • __del__(self):析构函数,当对象被删除时调用。

以上是一些常见的魔术方法,另外当我们在定义普通方法时,千万别在函数名前后加双下划线,以免混淆。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不在同一频道上的呆子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值