Fluentpython 特殊方法
特殊方法的存在是为了被 Python 解释器调用的
Python 语言参考手册中的“Data Model”(https://docs.python.org/3/reference/datamodel.html)一章列出了83 个特殊方法的名字,其中 47 个用于实现算术运算、位运算和比较操
作。表 1-1 和表 1-2 列出了这些方法的概况。
表1-1.png
表1-2:跟运算符相关的特殊方法
表 1-2.png
为什么len不是普通方法
“实用胜于纯粹。”
如果 x 是一个内置类型的实例,那么 len(x) 的速度会非常快。背后的原因是 CPython 会直接从一个 C 结构体里读取对象的长度,完全不会调用任何方法。获取一个集合中元素的数量是一个很常见的操作,在str、list、memoryview 等类型上,这个操作必须高效.
计算 s 中 x 出现的次数: s.count(x)。注意这里的 s 是一个序列类型。
__str__ 和 __repr__的区别:
>>> print str("Hello, world!")
Hello, world!
>>> print str(1000L)
1000
>>> str("Hello, world!")
'Hello, world!' # 字符串转换之后仍然是字符串
>>> str(1000L)
'1000'
>>> print repr("Hello, world!")
'Hello, world!'
>>> print repr(1000L)
1000L
>>> repr("Hello, world!")
"'Hello, world!'"
>>> repr(1000L)
'1000L'












网友评论