Python 特殊方法与运算符重载

类可以截获Python运算符:

·以双下划线命名的方法(__X__)是特殊钩子。


         Python运算符重载的实现是提供特殊命名的方法来拦截运算。Python语言替每种运算和特殊命名的方法之

  间,定义了固定不变的映射关系。


·当实例出现在内置运算时,这类方法会自动调用。


         例如,如果实例对象继承了__add__方法,当对象出现在+表达式内时,该方法就会调用。该方法的返回值会变

  成相应表达式的结果。


·类可覆盖多数内置类型运算。


        有几十种特殊运算符重载的方法的名称,几乎可截获并实现内置类型的所有运算。它不仅包括了表达式,而且像

  对象建立这类基本运算也包括在内。


·运算符覆盖方法没有默认值,而且也不需要。


        如果类没有定义或继承运算符重载方法,就是说相应的 运算在类实例中并不支持。例如,如果没有__add__,+表

  达式就会引发异常。


·运算符可让类与Python的对象模型相集成。


        重载类运算时,以类实现的用户定义对象的行为就会像 内置对象一样,因此,提供了一致性,以及与预期的接口
  的兼容性。




    常见运算符重载方法:


方法                                重载                                调用


__init__                          构造器方法                    对象建立:X = Class()
__del__                          析构方法                        对象回收
__add__                         运算符+                         X+Y, X += Y
__or__                           运算符|(位OR)                X|Y, X|=Y
__repr__,__str__           打印,转换                    print X, repr(X), str(X)
__call__                         函数调用                         X()
__getattr__                    点号运算                        X.undefined
__setattr__                    属性赋值                        X.any = value
__getitem__                  索引运算                         X[key], 没__iter__时的for
                                                                              循环和其他迭代器
__setitem__                  索引赋值                          X[key] = value
__len__                        长度                                  len(X), 真值测试
__cmp__                       比较                                X == Y, X
__lt__                           特定的比较                      X < Y(or else __cmp__)
__eq__                         特定的比较                      X == Y(or else __cmp__)
__radd__                       左侧加法 +                     Noninstance + X
__iadd__                    实地(增强的)加法            X += Y (or else __add__)
__iter__                      迭代环境                            用于循环,测试、理解、列表、
                                                                                映射及其他
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值