深入理解Python之数据模型

数据模型(Data Model)

python提供了很多特殊的方法

不含操作符

种类 方法名称
字符串/字节表示 __repr__, __str__, __format__, __bytes
数值转换 __abs__, __bool__, __complex, __int__, __float__, __hash__, __index__
模拟集合 __len__, __getitem__, __setitem__, __delitem, __contains__
迭代器 __iter__, __reversed__, __next__
模拟调用 __call__
上下文管理 __enter__, __exit__
实例创建和销毁 __new__, __init__, __del__
属性管理 __getattr__, __getattribute__, __setattr__, __delattr__, __dir__
属性描述器 __get__, __set__, __delete__
类服务 __prepare__, __instancecheck__, __subclasscheck__

操作符

种类 方法名和相关操作符
一元数值操作符 __neg__-, __pos__+, __abs__()
比较操作符 __lt__<, __le__<=, __eq__=, __ne__!=, __gt__>, __ge__>=
算术操作符 __add__+, __sub__-, __mul__*, __truediv__/, __floordiv__//, __mod__%, __divmod__ divmod(), __pow__ **或者(pow()), __round__ round()
反向算术操作符 __radd__, __rsub__, __rmul__, __rtruediv__, __rfloordiv__, __rmod__, __rdivmod__, __rpow__
自操作符 _iadd__, __isub__, __imul__, __itruediv__, __ifloordiv__, __imod__, __ipow__
位操作符 __invert__~, __lshift__<<, __rshift__>>, __and__&, __or__
反向位操作符 __rlshift__, __rrshift__, __rand__, __rxor__, __ror__
自增位操作符 __ilshift__, __irshift__, __iand__, __ixor__, __ior__
  • 通过实现上述特殊的方法,你自己的对象能表现得像内置类型。例如为了让对象打印出来可读性更好,这个时候需要实现__repr____str__ 区别