zoukankan      html  css  js  c++  java
  • python——操作符重载(重要)

    类可以重载python的操作符
     
    旧认识:__X__的名字 是系统定义的名字;是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
  • 相关阅读:
    Codeforce821E Okabe and El Psy Kongroo
    hihocoder1497 Queen Attack
    hihocoder 1523数据重排
    codeforce 780C Andryusha and Colored Balloons
    codeforce 768B Code For 1
    hihoCoder1270 建造基地 完全背包
    UVA10054 The Necklace 欧拉回路+并查集
    Codeforces Round #480 (Div. 2) C 贪心 D 数字、思维 E 树上倍增
    ZOJ 4029 Now Loading!!! 思维
    西安电子科技大学第16届程序设计竞赛网络同步赛 E dp G 找规律
  • 原文地址:https://www.cnblogs.com/Simon-xm/p/3931422.html
Copyright © 2011-2022 走看看