• Python中的操作符重载


    类可以重载python的操作符
    操作符重载使我们的对象与内置的一样。__X__的名字的方法是特殊的挂钩(hook),python通过这
     
    种特殊的命名来拦截操作符,以实现重载。 python在计算操作符时会自动调用这样的方法,例如:
     
    如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法。通过重载,用户定义的对
     
    象就像内置的一样。
     
    在类中重载操作符
    1、操作符重载使得类能拦截标准的python操作。
    2、类可以重载所有的python的表达式操作符。
    3、类可以重载对象操作:print,函数调用,限定等。
    4、重载使得类的实例看起来更像内置的。
    5、重载是通过特殊命名的类方法来实现的。
    方法名        重载的操作说明        调用表达式
    __init__    构造函数        创建对象:class()
    __del__        析构函数        释放对象的时候
    __add__        “+”            x + y
    __or__        “|”            x | y
    __repr__    打印,转换        print x, `x`
    __call__    函数调用        X()
    __getattr__    属性引用        x.undefined
    __getitem__    索引            x[key],for循环,in测试
    __setitem__    索引赋值        x[key] = value
    __getslice__    分片            x[low:high]
    __len__        长度            len(x)
    __cmp__        比较            x == Y ,x < y
    __radd__    右边的操作符"+"        非实例 + x
     
    例子:
    __getitem__拦截了所有的索引操作
    >>> class indexer:
    def __getitem__(self,index):
    return index ** 2
    >>> x = indexer()
    >>> for i in range(5):
    print x[i]    #x[i]将调用__getitem__(x,i)
    0
    1
    4
    9
    16
  • 相关阅读:
    帮助应届生、年轻程序员快速成长的12个锦囊<转载>
    曾国藩教您:如何富过三代
    Mvc示例代码调试之二——调试示例讲解
    如何处理婚姻问题
    jQuery对象与dom对象相互转换
    Mvc示例代码调试之一----调试工具及设置(用firebug与vs联合调试)
    Mvc示例之三——用Filter进行简单身份验证
    沟通的艺术
    做bs开发需要学习哪些技术
    我所读过的技术书籍
  • 原文地址:https://www.cnblogs.com/chengxuyuandashu/p/3753946.html
Copyright © 2020-2023  润新知