【读书笔记】 - 《流畅的python》01-python数据模型(双下划线方法)

本文为我在阅读该书时做的整理,一些我个人觉得传播比较广泛的知识不会整理在其中。

一 PYTHON数据模型

1.1 特殊方法

类中的双下划线方法,称为特殊方法/魔术方法,用于被python解释器调用。

  • __len__
    若定义了一个类A的__len__方法,a是A类的实例,a = A(),则使用len(a)就是在调用该方法。

  • __getitem__
    若定义了__getitem__方法,则a[0]就是在调用该方法。

  • __contains__
    或者 if x in ain就是在调用该方法。若一个集合没有实现__contains__方法,那么in运算符会按顺序做一次迭代搜索。

  • __iter__
    for x in a 是在调用该方法。

  • 一元运算符重载:

特殊方法运算符
__abs__()abs()
__add__()+
__mul__()*
__neg__()-
  • 比较运算符重载:
特殊方法运算符
__lt__()<
__le__()<=
__eq__()==
__ne__()!=
__gt__()>
__ge__()>=
  • 算数运算符重载:
特殊方法运算符
__truediv__()/
__floordiv__()//
__mod__()%
__divmod__()divmod()
__pow__()pow()或者**
__round__()round()
  • 位运算符重载:
特殊方法运算符
__invert__()~
__lshift__()<<
__rshift__()>>
__and__()&
__or__()|
__xor__()^
  • 字符串表示形式:
    __repr__
    该方法能把一个对象用字符串的形式表达出来以便辨认。
    __str__
    两方法类似但__str__仅在print()str()函数中被调用

Python语言参考手册:DataModel

Pythons数据模型是对元对象协议(meta object protocol,MOP)概念的一种解释。

1.2 其他特殊方法:

1.2.1 模块(Modules)

__name__ : 类名
__module__:模块名
__dict__:包含类的命名空间的字典。
__bases__:包含基类的元组,按它们在基类列表中的出现顺序排列。
__doc__:类的文档字符串,如果未定义,则为无。
__annotations__:包含在类主体执行期间收集的变量注释的字典。有关使用注释的最佳实践,请参阅注释最佳实践。

1.2.2 模拟数值对象

object.__add__(self, other)
object.__sub__(self, other)
object.__mul__(self, other)
object.__matmul__(self, other)
object.__truediv__(self, other)
object.__floordiv__(self, other)
object.__mod__(self, other)
object.__divmod__(self, other)
object.__pow__(self, other[, modulo])
object.__lshift__(self, other)
object.__rshift__(self, other)
object.__and__(self, other)
object.__xor__(self, other)
object.__or__(self, other)

1.2.3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

canmoumou

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

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

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

打赏作者

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

抵扣说明:

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

余额充值