• 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属性值。

          

  • 相关阅读:
    [Java入门] 从键盘输入两个整数,求最小公倍数并输出
    【C#食谱】【面食】菜单3:用泛型替代ArrayList
    C# Stable Sort(稳固排序)
    【C#食谱】【面食】菜单4:List和LinkedList性能比较
    一个非常酷的应用:修改“开始”菜单的显示文本
    我的第一个5年计划
    C#语言重要常识
    决定执行力的49个细节
    .NET资源链接
    标准表达式中数据类型不匹配(Access 时间格式)
  • 原文地址:https://www.cnblogs.com/zjh225901/p/6337158.html
Copyright © 2020-2023  润新知