首页 > 编程语言 >流畅的python笔记 (一) 1.python的数据模型

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

时间:2023-08-06 15:23:18浏览次数:46  
标签:__ 特殊 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 文档

 

标签:__,特殊,python,笔记,调用,方法,数据模型
From: https://www.cnblogs.com/Zhaolongtao/p/17607729.html

相关文章

  • 笔记|数据库设计——《数据库原理》
    数据库结构设计包括⚫需求分析阶段:综合各个用户的应用需求⚫概念结构设计:形成独立于各个DBMS概念模式,如E-R图⚫逻辑结构设计:形成数据库逻辑模式与外模式,用(基本)数据模型描述,例基本表、视图等⚫物理结构设计:形成数据库内模式,如DB文件或目录、索引一.需求分析......
  • 「学习笔记」扫描线
    什么是扫描线?顾名思义,一根用来扫描的线扫描线就是一条线在整个图上扫来扫去,它一般被用来解决图形面积,周长,以及二维数点等问题。下面我们用例题来引入。P5490【模板】扫描线-洛谷|计算机科学教育新生态(luogu.com.cn)我们对于这种题有三种做法暴力的进行覆盖扫描容......
  • 笔记|《Python数据分析基础》
    python基础StrategyforFindingaRegexWeneedastrategytofindaregexthatmatchesallthewinnersbutnoneofthelosers.Icameupwiththisapproach:Generateapoolofregexparts:smallregexesofafewcharacters,suchasoror."bu"&......
  • 《Java编程思想第四版》学习笔记05
    6.9.1继承初始化我们有必要对整个初始化过程有所认识,其中包括继承,对这个过程中发生的事情有一个整体性的概念。请观察下述代码://:Beetle.java//Thefullprocessofinitialization.classInsect{inti=9;intj;Insect(){prt("i="+i+",j="+j);j=39;......
  • Tarjan 系列学习笔记
    最近在复习提高算法,所以学习复习笔记写的就比较多。Tarjan系列的算法主要针对于图论而言。Part\(1\)缩点缩点算是Tarjan算法最广泛的应用了。先讲拓扑序。在一个有向图中,若此图无环,我们称这个图是有向无环图,也叫DAG,我们可以用拓扑排序解决许多图上问题,简单思路是先把入......
  • 使用Python爬取公众号的合集内容
    使用Python爬取公众号的合集前言。。。最近老是更新关于博客的文章,很久没更新其他的了,然后写一下如何爬取微信公众号里面的图片吧!先看看微信公众号的样子吧:我爬取的是公众号的合集内容讲解首先用手机打开某个图片公众号的文章,然后复制链接用电脑打开,它的url为:以下所展示的......
  • 深信服行为管理AC配置笔记
    深信服行为管理AC配置,可以直接参考官网原文:https://support.sangfor.com.cn/productDocument/read?product_id=22&version_id=907&category_id=244007 步骤1.通过默认IP登录设备,比如通过LAN口登录设备,LAN口的默认IP是10.251.251.251/24,在电脑上配置一个此网段的IP地址,通过http......
  • 如何使用 Python 运算符进行性能优化 All In One
    如何使用Python运算符进行性能优化AllInOne为什么Python运算符//比运算符/性能更好,运行速度更快呀❓WhyPythonoperator//isfasterthanoperator/demosclassSolution:defnumberOfSteps(self,num:int)->int:steps:int=0whilenum>......
  • Python模块
    目录1.作用2.导入3.python文件的引用问题(1)导入模块(2)引用时的路径问题python模块(Module),是一个python文件,以.py结尾。模块能定义函数、类和变量,模块里也能包含可执行的代码。1.作用模块就是一个Python文件,里面有类、函数、变量等,我们可以拿过来用(导入模块去使用)2.导入模块在使......
  • Python类与面向对象
    目录一、面向对象的概念1.是什么?2.特点二、类与对象1.类的定义(1)类的定义格式(2)类的定义形式2.类的构造(创建create)方法3.类的实例化(类的对象化)(1)对象的创建格式(2)访问对象成员4.成员的定义及访问(1)私有变量和方法的访问——只允许本类使用,子类和外部都不能访问(2)公有变量和方法的访问......