Python运算符重载
Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同。鉴于它的特殊性,今天就来讨论一下Python运算符重载。
Python语言本身提供了很多魔法方法,它的运算符重载就是通过重写这些Python内置魔法方法实现的。这些魔法方法都是以双下划线开头和结尾的,类似于__X__的形式,python通过这种特殊的命名方式来拦截操作符,以实现重载。当Python的内置操作运用于类对象时,Python会去搜索并调用对象中指定的方法完成操作。
类可以重载加减运算、打印、函数调用、索引等内置运算,运算符重载使我们的对象的行为与内置对象的一样。Python在调用操作符时会自动调用这样的方法,例如,如果类实现了__add__方法,当类的对象出现在+运算符中时会调用这个方法。
常见运算符重载方法
方法名 | 重载说明 | 运算符调用方式 |
__init__ | 构造函数 | 对象创建: X = Class(args) |
__del__ | 析构函数 | X对象收回 |
__add__/__sub__ | 加减运算 | X+Y, X+=Y/X-Y, X-=Y |
__or__ | 运算符| | X|Y, X|=Y |
_repr__/__str__ | 打印/转换 | print(X)、repr(X)/str(X) |
__call__ | 函数调用 | X(*args, **kwargs) |
__getattr__ | 属性引用 | X.undefined |
__setattr__ | 属性赋值 | X.any=value |
__delattr__ | 属性删除 | del X.any |
__getattribute__ | 属性获取 | X.any |
__getitem__ | 索引运算 | X[key],X[i:j] |
__setitem__ | 索引赋值 | X[key],X[i:j]=sequence |
__delitem__ | 索引和分片删除 | del X[key],del X[i:j] |
__len__ | 长度 | len(X) |
__bool__ | 布尔测试 | bool(X) |
__lt__, __gt__, __le__, __ge__, __eq__, __ne__ | 特定的比较 | 依次为X<Y,X>Y,X<=Y,X>=Y, X==Y,X!=Y 注释:(lt: less than, gt: greater than, le: less equal, ge: greater equal, eq: equal, ne: not equal ) 学习交流
热门图片
猜你喜欢的新闻
新闻热点 2020-02-23 14:27:16
2020-02-22 09:45:28
2020-02-22 09:42:20
2020-02-22 09:39:07
2020-02-21 16:46:56
2020-02-20 10:01:00
疑难解答 |