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.()  )

  • 相关阅读:
    Smart Client Architecture and Design Guide
    Duwamish密码分析篇, Part 3
    庆贺发文100篇
    .Net Distributed Application Design Guide
    New Introduction to ASP.NET 2.0 Web Parts Framework
    SPS toplevel Site Collection Administrators and Owners
    来自Ingo Rammer先生的Email关于《Advanced .Net Remoting》
    The newsletter published by Ingo Rammer
    深度探索.Net Remoting基础架构
    信道、接收器、接收链和信道接受提供程序
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9252177.html
Copyright © 2011-2022 走看看