• python学习手册笔记——29.运算符重载


    00.常见的运算符重载方法
    方法 重载 调用
    __init__ 构造函数 对象建立:X = Class(args)
    __del__ 析构函数 X对象收回
    __add__ 运算符+ 如果没有__iadd_,X + Y, X += Y
    __or__ 运算符|(位OR) 如果没有_ior_,X|Y,X|=Y
    __repr__,__str__ 打印,转换 print(x)、repr(x)、str(x)
    __call__ 函数调用 X(*args, **kargs)
    __getattr__ 点号运算 X.undefined
    __setattr__ 属性赋值语句 X.any = value
    __delattr__ 属性删除 del X.any
    __getattribute__ 属性获取 X.any
    __getitem__ 索引运算 X[key],X[i:j],没有__iter__时的for循环和其他迭代器
    __setitem__ 索引赋值语句 X[key] = value, X[i:j] = sequence
    __delitem__ 索引和分片删除 del X[key], del X[i:j]
    __len__ 长度 len(X),如果没有__bool__,真值测试
    __bool__ 布尔测试 bool(X),真测试
    __lt____gt____le____ge____eq____ne__ 特定的比较  
    __radd__ 右侧加法  
    __iadd__ 实地加法  
    __iter__,__next__ 迭代环境  
    __contains__ 成员关系测试  
    __index__ 整数值  
    __enter__,__exit__ 环境管理器  
    __exit__ 环境管理其  
    __get__,__set__ 描述符属性  
    __delete__    
    __new__ 创建 在__nint__之前创建对象

    02.Property内置函数允许我们把方法和特定类属性上的获取和设置操作关联起来。
    描述符提供了一个协议,把一个类的__get__和__set__方法域对特定类属性的访问关联起来。

    01.
    __getattr__:时拦截属性点号运算。当通过未定义(不存在)属性名臣和实例进行点号运算时,就会用属性名臣作为字符串调用这个方法。
    __setatrr__:会拦截所有属性的赋值语句
    __getattribute__:方法拦截所有的属性获取,而不只是那些未定义的
    __repr__:返回实例的字符串表达形式的__repr__方法。
    __str__
    __radd__:+运算符右侧使用实例对象
    __iadd__:原处加法
    __call__:如果定义了,Python就会未实例应用函数调用表达式运行__call__方法。
    __it__:
    __gt__:
    __bool__:获取一个直接的布尔值,然后,如果没有该方法,就尝试__len__类根据对象的擦汗高难度确定一个真值。
    __len__:一个非空对象看作是真
    __del__:每当实例产生时,就会调用__init__构造函数。每当实例空间被收回时(在立即收集时),他的对立面__del__,也就是析构函数,就会自动执行。

  • 相关阅读:
    【转】ThinkPHP 页面跳转
    thinkphp中select()和find()的区别
    (Python)异常处理try...except、raise
    python中try except处理程序异常的方法
    SNMP消息传输机制
    公钥私钥+数字证书原理
    转:使用python的Flask实现一个RESTful API服务器端
    转:xxe attack学习
    转:php防止sql注入的一点心得
    转:在 Ubuntu 上使用 Nginx 部署 Flask 应用
  • 原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/11238588.html
Copyright © 2020-2023  润新知