zoukankan      html  css  js  c++  java
  • python学习17--对象的一些BIF,描述符类

    __init__方法不允许有返回值
    __new__(class[,..])在init方法之前调用,并把参数原封不动的传给init方法。
      若当前类继承于一个不可变的类型例如:str,需要重写该方法。例如:定义一个字符串类
      特点是:字符串内所有的字符都是大写,其他方法不变。则该类需继承str类,并需要在new方法中先将所有的字符变为大写。疑:为什么不在init方法中进行大写转换。因为str类对象的类型不能改变。

    __del__,在所有对该对象的引用销毁之后,才会调用该方法,即:并不是del 一个对象就会调用该方法。可以在类中重写add,sub,or等算数,逻辑运算符进行自定义算数运算。

    __divmod__.返回一个元祖(商,余数)
    __str__.在print(object),在print的参数是一个实例化对象的时候,可以自动调用对象内重写的该方法,进行打印字符串。
    __repr__.直接输入对象,即可打印定制的字符串内容。例:>>a.可以打印实例化对象a的类的repr内定制的内容
    当类中发生赋值或者get属性操作,就会调用,__getsttr__,__setattrbute()__或者__setattr__()函数等(当前赋值的属性不存在时才调用,发生在setattrbute函数之后);
    如果此时在重写的__setattr__()函数中存在赋值语句,会发生死递归。
       解决方法:用super.__setattr__(),进行赋值。
      或者是用upers.__dict__[name]=value.进行赋值
      一般情况下,直接调用基类的方法进行。

     ·       
    描述符:
        将某一特殊类型类的实例指派给另外一个类的属性。该特殊类被称为描述符类。

      该类需实现至少一个下述方法:

      
     
     其中,instance表示上述另外一个类的实例object。
      ower表示另外一个类class.
      value属性值。

          

  • 相关阅读:
    javaWeb普通类获取ApplicationContext
    医学图像处理最全综述
    图像分割最全综述
    解放双手——相机与IMU外参的在线标定
    从零开始一起学习SALM-ICP原理及应用
    SLAM、三维重建,语义相关数据集大全
    SLAM面试常见问题
    SLAM方向国内有哪些优秀公司?
    三维视觉、SLAM方向全球顶尖实验室汇总
    SLAM方向公众号、知乎、博客上有哪些大V可以关注?
  • 原文地址:https://www.cnblogs.com/zjh225901/p/6337158.html
Copyright © 2011-2022 走看看