zoukankan      html  css  js  c++  java
  • 工作小结 常见定制类

    双下方法

    __repr__  __str__

    __str__方法  必然返回字符串

    ‘%s’%(对象) print(str(a)) print(直接打印对象)都是走类中__str__
    %r  repr()  实际上都是走repr
    repr
    class A:
        def __str__(self):
            return '父类str打印中'  #如果是数字类的  需要str(1)  再返回
        def __repr__(self):
            return '父类repr打印中'
    class B(A):
        def __str__(self):
            return '子类str打印中'
        def __repr__(self):
            return '子类repr打印中'
    a = B()
    print('%s'%(a))  #子类str打印中
    print(a)   #子类str打印中
    print(str(a))  #子类str打印中
    print('%r'%(a))  #子类repr打印中
    print(repr(a))  #子类repr打印中
    如果子类中没有__str__就先用父类的str  父类没有str就先用子类的repr
    class
    A: def __str__(self): return '父类str打印中' def __repr__(self): return '父类repr打印中' class B(A): def __repr__(self): return '子类repr打印中' a = B() print('%s'%(a)) #父类str打印中 print(str(a)) class A: def __repr__(self): return '父类repr打印中' class B(A): def __repr__(self): return '子类repr打印中' a = B() print('%s'%(a)) 子类repr打印中 class A: def __repr__(self): return '父类repr打印中' class B(A): pass a = B() print('%s'%(a)) 父类repr打印中

    __del__  如果直接执行del方法是 例如删除一个对象 他会将连带的 对象.f = open()  一块删除   但实际上改文件并没有关掉,所以需要用到__del__方法  在del时就会调用类中的__del__

        此时将 关闭文件的操作放到下面  变成先关闭文件再删除对象,完美解决

       

    class A:
        def __del__(self):
            print('aaa')
            self.f.close()
    a = A()
    a.f = open('y.py')
    del a

    __call__

           一个对象加上()  a()就会执行__call__方法下面的功能,此方法适用于给程序添加一些小功能 简化了代码

    __len__

      

    class A:
        def __init__(self,classes):
            self.classes = classes
            self.names = []
        def __len__(self):
            return len(self.names)
    a = A('xioming')
    a.names.append('ergou')
    a.names.append('ergou')
    a.names.append('ergou')
    a.names.append('ergou')
    print(len(a))
    print(a.names)
    print(a.classes)
  • 相关阅读:
    Web API中的消息处理程序(Message Handler)
    Web API中的模型验证
    autoconf配置的项目,编译debug版本
    gcc编译工具生成动态库和静态库之一----介绍
    VMware中四种网络连接模式的区别
    vmware虚拟机三种网络模式的区别
    code block自动生成makefile
    centos7 安装 codeblock(rpm)
    利用cbmakegen导出Code::blocks的Makefile
    C/C++程序CPU问题分析
  • 原文地址:https://www.cnblogs.com/Ebola-/p/8330113.html
Copyright © 2011-2022 走看看