zoukankan      html  css  js  c++  java
  • str&repr的使用&format模板的自定义

    str与repr并不存在优先级,本质上执行print就是在调用系统的__str__方法,而repr作用在python编辑器中,所以只用在str不存在时,print会找repr来顶替使用

    实现代码如下:

     1 class Run:
     2     def __init__(self,name,age):
     3         self.name=name
     4         self.age=age
     5     # def __str__(self):
     6     #     return '这是str的 名字叫%s年龄是%s'%(self.name,self.age)
     7 
     8     def __repr__(self):  #python解释器调用的
     9         return  '这是repr的 名字叫%s年龄是%s' % (self.name, self.age)
    10 
    11 r1=Run('Kevin',23)
    12 print(r1) #本质上执行print就是在调用__str__方法

     但不管如何,返回值必须为字符串类型,否则直接抛异常

    format下面使用的字典或者变量不要与它重名

    参考下面的示例:

     1 class Foo:
     2 
     3     def __init__(self,year,mon,day):
     4         self.year=year
     5         self.mon=mon
     6         self.day=day
     7 
     8     def __format__(self, format_spec):
     9          print('*****************')
    10          # print(format_spec)
    11          # print(self.year)
    12 
    13          fm=mat[format_spec]
    14          return fm.format(self)
    15 
    16 f1=Foo(2018,7,2)
    17 print(format(f1,'dmy'))
    18 print(format(f1,'y-m-d'))
    19 print(format(f1,'m:d:y'))
    20 
    21 print('{0}年{1}月{2}日'.format(2018,7,2))

    __slots__用来强行限定类的实例化对象能拥有的属性,超出的会报错

     1 class Roo:
     2      __slots__ = ['name','age']
     3     #   __slots__ = 'name'
     4 rt=Roo()
     5 rt.name='tom'
     6 rt.age=18
     7 # rt.sex='man'
     8 # print(rt.__dict__)
     9 print(Roo.__slots__)
    10 print(rt.__slots__)
    11 print(rt.name,rt.age)

     __doc__不会被子类继承,默认存在且值为None

    析构函数__del__主要是在垃圾回收内存清理时会触发,如果仅仅是删除对象的元素属性,则不会触发

    实现代码:

     1 class Realy:
     2     def __del__(self):
     3         print('执行我了')
     4 
     5 re=Realy()
     6 
     7 re.name='tom'
     8 del re.name  #不会触发del
     9 del re       #会触发del
    10 print('******************')

     对象后面加括号,可以调用类里面的__call__方法  (如s1.()  )

  • 相关阅读:
    css 选择器
    IIS6、7添加反向代理的步骤
    使用脚本监控windows服务的方法
    ueditor编辑器插件 chrome中图片上传框延时问题
    Mysql隐式类型转换原则
    ASP.NET MVC 分页问题
    .NET程序集引用COM组件MSScriptControl所遇到的问题
    Makefile学习笔记
    操作系统的主要功能
    Linux基本命令之用户系统相关命令
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9252177.html
Copyright © 2011-2022 走看看