zoukankan      html  css  js  c++  java
  • Python中的操作符重载

    运算符重载是指在方法中拦截内置的操作----当类的实例出现在内置操作中,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
     
     

    python中,我们在定义类的时候,可以通过实现一些函数来实现重载运算符。

    例子如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # -*- coding:utf-8 -*-
    class Test(object):
      def __init__(self, value):
        self.value = value
      def __add__(self, x):
        return self.value *  x.value
    a = Test(3)
    b = Test(4)
    print a + b

    运行结果为:12   a+b等同于a.__add__(b)

    上面我们重载了加法。其他类似。

     
     
  • 相关阅读:
    git使用总结
    将本地项目上传到git
    ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
    SQLQueryStress
    SQL Server 触发器
    HTTP 错误 404.3
    HTTP 错误 500.19 Internal Server Error的解决方法
    windows server 2012 配置多用户ftp服务器配置注意点
    自定义Remote验证(对博客园文章“Asp.net MVC验证哪些事(3)-- Remote验证及其改进(附源码)”自定义验证的改进)
    [ASP.net教程]IIS服务器 远程发布(Web Deploy)配置
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/5112537.html
Copyright © 2011-2022 走看看