Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python对象特殊方法及其用法演示

Python对象特殊方法及其用法演示

作者头像
Python小屋屋主
发布于 2018-04-16 09:23:51
发布于 2018-04-16 09:23:51
9870
举报
文章被收录于专栏:Python小屋Python小屋

Python类有大量特殊方法,实现不同的特殊方法后该类对象则会支持对应的运算符或内置函数,下面的对应关系表列出了大部分特殊方法:

方法

功能说明

__new__()

类的静态方法,用于确定是否要创建对象

__init__()

构造方法,创建对象时自动调用

__del__()

析构方法,释放对象时自动调用

__add__()

+

__sub__()

-

__mul__()

*

__truediv__()

/

__floordiv__()

//

__mod__()

%

__pow__()

**

__eq__()、 __ne__()、__lt__()、 __le__()、__gt__()、 __ge__()

==、 !=、<、 <=、>、 >=

__lshift__()、__rshift__()

<<、>>

__and__()、__or__()、__invert__()、__xor__()

&、|、~、^

__iadd__()、__isub__()

+=、-=,很多其他运算符也有与之对应的复合赋值运算符

__pos__()

一元运算符+,正号

__neg__()

一元运算符-,负号

__contains__ ()

与成员测试运算符in对应

__radd__()、__rsub__

反射加法、反射减法,一般与普通加法和减法具有相同的功能,但操作数的位置或顺序相反,很多其他运算符也有与之对应的反射运算符

__abs__()

与内置函数abs()对应

__bool__()

与内置函数bool()对应,要求该方法必须返回True或False

__bytes__()

与内置函数bytes()对应

__complex__()

与内置函数complex()对应,要求该方法必须返回复数

__dir__()

与内置函数dir()对应

__divmod__()

与内置函数divmod()对应

__float__()

与内置函数float()对应,要求该该方法必须返回实数

__hash__()

与内置函数hash()对应

__int__()

与内置函数int()对应,要求该方法必须返回整数

__len__()

与内置函数len()对应

__next__()

与内置函数next()对应

__reduce__()

提供对reduce()函数的支持

__reversed__()

与内置函数reversed()对应

__round__()

对内置函数round()对应

__str__()

与内置函数str()对应,要求该方法必须返回str类型的数据

__repr__()

打印、转换,要求该方法必须返回str类型的数据

__getitem__()

按照索引获取值

__setitem__()

按照索引赋值

__delattr__()

删除对象的指定属性

__getattr__()

获取对象指定属性的值,对应成员访问运算符“.”

__getattribute__()

获取对象指定属性的值,如果同时定义了该方法与__getattr__(),那么__getattr__()将不会被调用,除非在__getattribute__()中显式调用__getattr__()或者抛出AttributeError异常

__setattr__()

设置对象指定属性的值

__base__

该类的基类

__class__

返回对象所属的类

__dict__

对象所包含的属性与值的字典

__subclasses__()

返回该类的所有子类

__call__()

包含该特殊方法的类的实例可以像函数一样调用

__get__()

定义了这三个特殊方法中任何一个的类称作描述符(descriptor),描述符对象一般作为其他类的属性来使用,这三个方法分别在获取属性、修改属性值或删除属性时被调用

__set__()

__delete__()

下面举几个例子演示特殊方法的用法:

# 普通类,对象不支持加法运算

>>> class T: def __init__(self, v): self.__value = v

>>> t = T(3) >>> t + 5 Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> t + 5 TypeError: unsupported operand type(s) for +: 'T' and 'int'

# 为类实现特殊方法__add__(),对象支持加法运算

# 不支持直接显示对象,也不支持使用print()进行显示 >>> class T: def __init__(self, v): self.__value = v def __add__(self, v): return T(self.__value + v)

>>> t = T(3) >>> t + 5 <__main__.T object at 0x0000028472147470>

# 为类实现特殊方法__repr__()和__str__()

# 对象支持直接显示和使用print()显示 >>> class T: def __init__(self, v): self.__value = v def __add__(self, v): return T(self.__value + v) def __repr__(self): return repr(self.__value) def __str__(self): return str(self.__value)

>>> t = T(3) >>> tt = t + 5 >>> tt 8 >>> print(tt) 8

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++对象模型和this指针实例分析(一)
PS:注意:一个空的类只占一个字节(为了区分空对象所占内存的位置),但是类里有了非静态成员变量后就占变量所对应的字节。
CtrlX
2022/08/10
3100
C++对象模型和this指针实例分析(一)
C++对象模型和this指针详解
这篇文章主要介绍了详解C++对象模型和this指针,是C++入门学习中的基础知识,需要的朋友可以参考下,希望能够给你带来帮助
米米素材网
2022/07/24
2470
C++对象模型和this指针详解
c++之this指针
this指针指向被调用的成员函数所属的对象。 this指针是隐含每一个非静态成员函数内的一种指针。 this指针不需要定义,直接使用即可。 用途: 当函数的形参和成员变量名重名时,可以用this进行区分。 在类的非静态成员函数中返回对象本身,可使用return *this。 #include<iostream> using namespace std; class Person { public: int age; void setAge(int age) { this->a
西西嘛呦
2020/08/26
3880
【C++】类和对象核心总结
a. 在C语言阶段我们就已经认识到了结构体,它可以帮助我们实现多种数据结构,功能强大不言而喻。在C++中为了更好的封装,以及更好的将现实生活抽象化为计算机世界,采用面向对象的思想帮助程序猿能够对用户需求进行抽象思维化,不得不需要类class的出现。
举杯邀明月
2023/04/12
7880
【C++】类和对象核心总结
类和对象(万字总结!深度总结了类的相关知识)(上)
为什么C++要学习类?学习C++中的类是掌握面向对象编程的关键。类提供了将数据与操作封装在一起的结构化方式,帮助开发者解决复杂问题、提高代码的可重用性和安全性。通过类的继承、封装、多态,可以更灵活地设计和扩展程序,同时模拟现实世界中的对象和行为,提升代码的可维护性和效率。掌握类有助于编写高效、清晰的代码,并应对复杂的软件系统设计。下面就由我来带大家深度剖析一下类和对象的真正奥秘…
suye
2024/10/16
1230
C++入门 学习记录
·整数基本整数类型:int;还可以按符号分:signed(默认不写)、unsigned;按照数据范围分:short、long、long long
用户6948990
2025/04/03
480
C++入门 学习记录
this指针的介绍和用法
this指针是面向对象程序设计的一项概念,在C++中,它表示当前运行的对象。在实现对象的方法时,this指针来获得该对象自身的引用。
全栈程序员站长
2022/08/29
5470
this指针的介绍和用法
C++的this指针
当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。 对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢? this是一个指针,它时时刻刻指向你这个实例本身。
全栈程序员站长
2022/08/29
6010
【C++掌中宝】类和对象(二):隐藏的this指针
在 C++ 编程中,类是面向对象编程的核心,而类中的成员函数与对象的交互则通过一个隐含的指针来实现,这就是 this 指针。它在 C++ 类的非静态成员函数中自动存在并指向调用该函数的对象实例。在这篇文章中,我们将详细探讨 this 指针的定义、用法以及其背后的工作原理。
Crossoads
2024/10/22
1510
关于this指针
一个类的对象中实际只包含了该对象的数据成员信息,当我们创建了多个类的对象时,使对象1调用该类的成员函数,为什么可以改变对象1中的信息,而不去设置其他对象的信息?成员函数在类中只有一份,所有该类的对象共同使用,编译器是如何识别并处理的呢?
全栈程序员站长
2022/08/29
4480
关于this指针
单例模式
项目上总是用到单例,所以做一个小总结,之前在学校学习设计模式像背八股文一样,毫无实践可言
无敌清风蓝
2024/06/04
980
C++-面向对象(七)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/10/28
3710
this指针小总结
在C++中,this指针是一个隐式的、非静态的成员指针,它指向调用它的对象的地址。每个非静态成员函数都含有一个this指针,该指针在成员函数中用于访问调用它的对象的成员。
ljw695
2024/10/18
900
解析this指针
每个对象中的数据成员都占有存储空间,如果一个类定义了n个对象的话,那么就有n个大小相等的空间来存放这n个对象的数据成员,但是不同的对象都调用同一个代码段。
全栈程序员站长
2022/08/30
1700
解析this指针
C++之this指针
有个问题是刚开始学习C++的人都想知道的,那就是C++的类对象的大小是多少?可能的猜测是它所有数据成员的大小加上所有函数指针的大小,这样就是类的大小。我们来测试一下:
zy010101
2020/04/08
4580
C++之this指针
【C++篇】类与对象的秘密(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。
平凡之路.
2024/10/20
1420
【C++篇】类与对象的秘密(上)
面向对象之this指针与类中的枚举类型
相信在坐的很多人,都在学Python,对于Python来说有self,类比到C++中就是this指针,那么下面一起来深入分析this指针在类中的使用!
公众号guangcity
2019/09/20
1.2K0
面向对象之this指针与类中的枚举类型
c++面向对象的一些问题1.0
构造函数 特殊的成员函数,给对象的初始化,不需要用户调用,建立对象时,自动执行 它的函数名字与类相同,可以重载,没有返回值和函数类型。 如果不写构造函数,类会给出一个无参数的构造函数。 复制构造函数 a.程序新建立一个对象时,用另一个对象对它初始化。 b. 函数的参数为对象。 c. 函数的返回值为对象。 ---- 特殊的数据成员 常数据成员,const声明,其值不能改变。 const string sex; 静态数据成员,static声明,属于类,只能在类外初始化。 stat
热心的社会主义接班人
2018/04/27
5810
c++面向对象的一些问题1.0
C++ 核心编程
实参通常是通过值传递给函数的,这意味着形参接收的只是发送给它们的值的副本,它们存储在函数的本地内存中。对形参值进行的任何更改都不会影响原始实参的值。
全栈程序员站长
2022/07/13
2.2K0
C++学习————第四天(类、this指针)
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
IsLand1314
2024/10/15
1090
C++学习————第四天(类、this指针)
相关推荐
C++对象模型和this指针实例分析(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档