您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:12-25来源:作者:点击数:

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门