Python对象特殊方法及其用法演示
来源:互联网 发布:校园网网络拓扑图设计 编辑:程序博客网 时间:2024/05/21 09:15
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__()
下面举几个例子演示特殊方法的用法:
# 普通类,对象不支持加法运算
>>> classT:
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
更多Python技术文章请关注微信公众号“Python小屋”进行阅读。
- Python对象特殊方法及其用法演示
- python对象特殊方法列表
- Python面向对象5:特殊方法
- Python 对象特殊方法:(一)对象创建与销毁
- Python 对象特殊方法:(二)对象可调用接口
- split函数及其特殊用法
- python学习——特殊方法__str__的用法
- python对象与属性相关的特殊方法
- python 函数是可调用对象和特殊方法__call__
- python面向对象编程(2):特殊方法
- python中面向对象编程的特殊方法
- Python中的特殊方法
- Python 进阶特殊方法
- Python的特殊方法
- Response对象的特殊用法
- Python 数据类型及其用法
- Python关键字及其用法
- 【IO】中InputStream及其方法的演示
- 通配符、正则表达式的回溯解法
- HDU1488【分离链接法】
- pat乙级1005
- JAVA大数据搜索之Lucence
- 深度:从U16整队出国培训看鲁能海外青训全面升级
- Python对象特殊方法及其用法演示
- react-native集成超级强大的图表工具native-echarts
- pat乙级1003
- 单调队列入门——POJ
- 聚焦鲁能泰山青训小将:阿卜杜,雏鹰试飞盼天阔
- OpenCV2.4.9+VS2013配置
- hdu 1995 汉诺塔V(递推)
- 用ECLIPSE跑HADOOP程序的注意事项
- 希尔排序实现