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)
  • 相关阅读:
    ASP.NET中的DataBinder.Eval用法
    jquery Ajax调用asmx和ashx代码示例三级联动
    项目中使用的架构
    asp.net(c#)上传图片到数据库
    asp.net(c#)从数据库里读取图片并显示到页面
    一款好的UI草图设计软件
    Windows Azure云平台(无须提供信用卡)[转]
    推荐8个超棒的学习 jQuery 的网站
    推荐两个界面原型设计工具GUIDesignStudio 和 Mockups For Desktop
    在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
  • 原文地址:https://www.cnblogs.com/Ebola-/p/8330113.html
Copyright © 2011-2022 走看看