本文为我在阅读该书时做的整理,一些我个人觉得传播比较广泛的知识不会整理在其中。
一 PYTHON数据模型
1.1 特殊方法
类中的双下划线方法,称为特殊方法/魔术方法,用于被python解释器调用。
-
__len__
若定义了一个类A的__len__
方法,a是A类的实例,a = A()
,则使用len(a)
就是在调用该方法。 -
__getitem__
若定义了__getitem__
方法,则a[0]
就是在调用该方法。 -
__contains__
或者if x in a
的in
就是在调用该方法。若一个集合没有实现__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)