zoukankan      html  css  js  c++  java
  • pythone class 内置特殊方法

    __str__   面向用户的输出

    __repr__ 面向开发人员的输出

    打印类实例,先找str如果有刚打印__str__,如没有__str__ 则找__repr__

    __call__ 使类当做函数可以真接调用

     

    类的索引操作

         __setitem__(self,key,vlaue)

         __getitem__(self,item)

         __delitem__(self.key)

    __dir__()用法:列出对象的所有属性(方法)名

    重载运算符含义
    __new__ 创建类,在 __init__ 之前创建对象
    __init__ 类的构造函数,其功能是创建类对象时做初始化工作。
    __del__  析构函数,其功能是销毁对象时进行回收资源的操作,程序运行完之后自动执行
    __add__ 加法运算符 +,当类对象 X 做例如 X+Y 或者 X+=Y 等操作,内部会调用此方法。但如果类中对 __iadd__ 方法进行了重载,则类对象 X 在做 X+=Y 类似操作时,会优先选择调用 __iadd__ 方法。
    __radd__ 当类对象 X 做类似 Y+X 的运算时,会调用此方法。
    __iadd__ 重载 += 运算符,也就是说,当类对象 X 做类似 X+=Y 的操作时,会调用此方法。
    __or__ “或”运算符 |,如果没有重载 __ior__,则在类似 X|Y、X|=Y 这样的语句中,“或”符号生效
    __repr__,__str__ 格式转换方法,分别对应函数 repr(X)、str(X)
    __call__ 函数调用,类似于 X(*args, **kwargs) 语句
    __getattr__ 点号运算,用来获取类属性
    __setattr__ 属性赋值语句,类似于 X.any=value
    __delattr__ 删除属性,类似于 del X.any
    __getattribute__ 获取属性,类似于 X.any
    __getitem__ 索引运算,类似于 X[key],X[i:j]
    __setitem__ 索引赋值语句,类似于 X[key], X[i:j]=sequence
    __delitem__  索引和分片删除
    __get__, __set__, __delete__ 描述符属性,类似于 X.attr,X.attr=value,del X.attr
    __len__  计算长度,类似于 len(X)
    __lt__,__gt__,__le__,__ge__,__eq__,__ne__  比较,分别对应于 <、>、<=、>=、=、!= 运算符。
    __iter__,__next__ 迭代环境下,生成迭代器与取下一条,类似于 I=iter(X) 和 next()
    __contains__ 成员关系测试,类似于 item in X
    __index__  整数值,类似于 hex(X),bin(X),oct(X)
    __enter__,__exit__ 在对类对象执行类似 with obj as var 的操作之前,会先调用 __enter__ 方法,其结果会传给 var;在最终结束该操作之前,会调用 __exit__ 方法(常用于做一些清理、扫尾的工作)

    hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法

    getattr() 函数获取某个类实例对象中指定属性的值

    setattr() 函数的功能相对比较复杂,它最基础的功能是修改类实例对象中的属性值。其次,它还可以实现为实例对象动态添加属性或者方法。

    issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。

    isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。

    __new__ 

    1)__new__方法是静态类方法,虽然没有加静态类方法的装饰器;

    2)A继承object类,虽然通常可以省略object字样。但这里省略就无法执行__new__方法。若A继承其他类,同样可以使用object的__new__方法,也可以使用父类的__new__方法;

    3)在实例化对象的时候,__new__方法在__init__方法之前执行;

    4)__new__必须返回一个对象,才能给__init__初始化。

    每天进步一点点,多思考,多总结 版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
  • 相关阅读:
    airpods2连接win10的方法步骤
    JSON学习笔记
    TCP-IP总线与CAN总线优缺点对比
    svn切换目录
    SQLite学习笔记
    python-opencv安装及入门
    python数据可视化
    python-opencv视觉巡线
    python-opencv进阶应用
    QT窗口和部件
  • 原文地址:https://www.cnblogs.com/tingxin/p/12164688.html
Copyright © 2011-2022 走看看