python面向对象——类的特殊方法(非运算特殊方法)

简介: 在python中,所有的code都是在对象中进行工作的,python2中的许多函数到了python3中都一一转化为对象,在使用的时候要按照对象的使用方法来进行操作。

在python中,所有的code都是在对象中进行工作的,python2中的许多函数到了python3中都一一转化为对象,在使用的时候要按照对象的使用方法来进行操作。可以通过“is”操作符来判断两者是不是同一对象,也可以通过id()来进行唯一性的判断。

现在要说的特殊方法,就是python设计类时候编写的方法,通常是__ 开头,例如 :__str____get__
python中有“很多”的特殊方法,具体有多少,数了数大概有83个,其中有47个用于实现算术运算、位运算和比较操作。

这里介绍非运算的特殊方法。
按照常用顺序进行排序:

1、__init__(self[, ...])

最基本的特殊方法,在此类对象被创建的时候执行该函数,该特殊方法主要用来对此对象的数据进行初始化,不可返回non-none value(如果返回会提示出现TypeError),另外有继承现象的时候,如果基类中有该方法,那么在子类的__init__方法中必须显示进行调用父类的方法保证类成员的正确初始化:一般用super().__init__([args...]).

2、__new__(cls[, ...])

__new__方法为静态方法,所以一般在类中我们不会对其进行显式定义,它在一个类生成对象的时候会自动执行,如果new方法不执行,那么init方法也就不会执行,当热可以被重载定义__new__修改其内容实现自定义类创建。

3、__dir__(self)

dir()函数对该类执行的时候,该方法会返回 list of attributes ,也就是在该特殊方法中返回list列表,内容自己编写。

4、__del__(self)

类似于C++的析构函数但又不完全相同,与__init__类作用域相反,在该对象被销毁的时候会执行该特殊函数,如果该对象存在一份引用,那么对该对象的销毁会进行延迟,但是注意,__del__()方法不会执行两侧,解释器会在一个对象的所有引用都不存在的时候执行一次也就一次__del__方法。

5、__repr__(self)

比较正式地,将一个对象用字符串的形式表达出来以便于辨认。也可以说是“字符串表示形式”。repr就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式的。如果没有实现__repr__那么在控制台打印一个向量实例的时候,得到的字符串可能是<Vector object at 0x*********>

6、__str__(self)

str与repr类似,但是不是那么的“正式”,它对终端更友好一些,在对象被str()函数使用、或者被print函数调用的时候才会执行。如果str没有被定义,那么在需要执行str的时候,解释器会试图调用repr方法。

7、__getitem__(self, key)

在使用self[key]的时候会进行调用,对于连续的序列,key值应该是整数或者切片。注意负整数的key也是由__getitem__()来决定的。如果key值不正确,那么会出现TypeError ,如果key值超出索引范围,那么会出现IndexError 。对于mapping的类型来说,如果缺少key,那么会出现KeyError 。

目录
相关文章
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
385 1
|
2月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
195 0
|
4月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
177 2
|
4月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
152 0
|
4月前
|
传感器 大数据 API
Python数字限制在指定范围内:方法与实践
在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
240 0
|
4月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
3月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
487 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
3月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
4月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
300 4
|
3月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
113 0

推荐镜像

更多