流畅的python笔记 (一) 1.python的数据模型

python的数据模型:python风格的设计思想完全体现在Python的数据模型上,而数据模型所描述的API,为使用最地道的语言特性来构建你自己的对象提供了工具。数据模型其实是对 Python 框架的描述,它规范了这门语言自身构建模块的接口,这些模块包括但不限于序列、迭代器、函数、类和上下文管理器。

一些特殊方法(双下方法 or 魔术方法):如__getitem__ 等。这些特殊方法名能让你自己的对象实现和支持以下的语言架构,并与之交互:

  1. • 迭代

  2. • 集合类

  3. • 属性访问

  4. • 运算符重载

  5. • 函数和方法的调用

  6. • 对象的创建和销毁

  7. • 字符串表示形式和格式化

  8. • 管理上下文(即 with 块)

 特殊方法的使用

  注:特殊方法的存在是为了被 Python 解释器调用的,你自己并不需要调用它
  1. 如内置函数len(),在使用时,如果参数是自定义类型,那么它会调用由你实现的__len__()方法,而如果是内置类型,那么 CPython 会抄个近路,__len__ 实际上会直接返回 PyVarObject 里的 ob_size 属性。
  2. 通过内置的函数(例如 len、iter、str,等等)来使用特殊方法是最好的选择。这些内置函数不仅会调用特殊方法,通常还提供额外的好处,而且对于内置的类来说,它们的速度更快。
  3. 也不建议自己随意想当然地添加特殊方法,可能会有冲突

 举个栗子:一个 Vector 类的实现,在类中自定义实现了如下特殊方法:__repr____abs____add__ __mul__

当使用向量对象进行 + *  abs 等运算时,python解释器会自动调用这些特殊方法

更多全面的特殊方法,可以看官方文档:

3. 数据模型 — Python 3.11.4 文档

 

posted @   肆空界  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示