python的数据模型:python风格的设计思想完全体现在Python的数据模型上,而数据模型所描述的API,为使用最地道的语言特性来构建你自己的对象提供了工具。数据模型其实是对 Python 框架的描述,它规范了这门语言自身构建模块的接口,这些模块包括但不限于序列、迭代器、函数、类和上下文管理器。
一些特殊方法(双下方法 or 魔术方法):如__getitem__ 等。这些特殊方法名能让你自己的对象实现和支持以下的语言架构,并与之交互:
-
• 迭代
-
• 集合类
-
• 属性访问
-
• 运算符重载
-
• 函数和方法的调用
-
• 对象的创建和销毁
-
• 字符串表示形式和格式化
-
• 管理上下文(即 with 块)
特殊方法的使用:
注:特殊方法的存在是为了被 Python 解释器调用的,你自己并不需要调用它们- 如内置函数len(),在使用时,如果参数是自定义类型,那么它会调用由你实现的__len__()方法,而如果是内置类型,那么 CPython 会抄个近路,__len__ 实际上会直接返回 PyVarObject 里的 ob_size 属性。
- 通过内置的函数(例如 len、iter、str,等等)来使用特殊方法是最好的选择。这些内置函数不仅会调用特殊方法,通常还提供额外的好处,而且对于内置的类来说,它们的速度更快。
- 也不建议自己随意想当然地添加特殊方法,可能会有冲突
举个栗子:一个 Vector 类的实现,在类中自定义实现了如下特殊方法:__repr__、 __abs__、 __add__ 和 __mul__
当使用向量对象进行 + * abs 等运算时,python解释器会自动调用这些特殊方法
更多全面的特殊方法,可以看官方文档:
标签:__,特殊,python,笔记,调用,方法,数据模型 From: https://www.cnblogs.com/Zhaolongtao/p/17607729.html