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 。

目录
相关文章
|
21天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
41 3
|
8天前
|
安全
Python-打印99乘法表的两种方法
本文详细介绍了两种实现99乘法表的方法:使用`while`循环和`for`循环。每种方法都包括了步骤解析、代码演示及优缺点分析。文章旨在帮助编程初学者理解和掌握循环结构的应用,内容通俗易懂,适合编程新手阅读。博主表示欢迎读者反馈,共同进步。
|
13天前
|
关系型数据库 开发者 Python
Python编程中的面向对象设计原则####
在本文中,我们将探讨Python编程中的面向对象设计原则。面向对象编程(OOP)是一种通过使用“对象”和“类”的概念来组织代码的方法。我们将介绍SOLID原则,包括单一职责原则、开放/封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则有助于提高代码的可读性、可维护性和可扩展性。 ####
|
16天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
74 5
|
25天前
|
算法 决策智能 Python
Python中解决TSP的方法
旅行商问题(TSP)是寻找最短路径,使旅行商能访问每个城市一次并返回起点的经典优化问题。本文介绍使用Python的`ortools`库解决TSP的方法,通过定义城市间的距离矩阵,调用库函数计算最优路径,并打印结果。此方法适用于小规模问题,对于大规模或特定需求,需深入了解算法原理及定制策略。
35 15
WK
|
1月前
|
Python
Python中format_map()方法
在Python中,`format_map()`方法用于使用字典格式化字符串。它接受一个字典作为参数,用字典中的键值对替换字符串中的占位符。此方法适用于从字典动态获取值的场景,尤其在处理大量替换值时更为清晰和方便。
WK
77 36
|
22天前
|
机器学习/深度学习 人工智能 算法
强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用
本文探讨了强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用,通过案例分析展示了其潜力,并讨论了面临的挑战及未来发展趋势。强化学习正为游戏AI带来新的可能性。
58 4
|
2月前
|
Python
Python面向对象(2)
【10月更文挑战第14天】
Python面向对象(2)
|
28天前
|
Python
Python编程中的魔法方法(Magic Methods)
【10月更文挑战第40天】在Python的世界中,魔法方法就像是隐藏在代码背后的神秘力量。它们通常以双下划线开头和结尾,比如 `__init__` 或 `__str__`。这些方法定义了对象的行为,当特定操作发生时自动调用。本文将揭开这些魔法方法的面纱,通过实际例子展示如何利用它们来增强你的类功能。
14 1
|
2月前
|
设计模式 程序员 C语言
Python面向对象
【10月更文挑战第13天】
Python面向对象