zoukankan      html  css  js  c++  java
  • __str__ __repr__ 与 __format__

    # __str__ __repr__ 与 __format__
    class Foo:
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
    
        def __str__(self):
            return '改变了对象的字符串方式,默认为对象的内存地址'
    
        def __repr__(self):
            return '在控制台输出时(或没有__str__)的显示方式'
    
        # __str__ 与 __repr__ 只能return字符串类型
    
        def __format__(self, format_spec):
            if not format_spec or format_spec not in format_dic:     # 此处判断用户是否传空参数或字典中没有的参数,并指定一个值
                format_spec = 'm-d-y'
    
            fm = format_dic[format_spec]    # 从字典format_dic中找到相应的格式
            return fm.format(self)  # 返回显示的格式
    
    
    f1 = Foo(2018, 5, 8)
    print(f1)  # 相当于 str(f1) -> f1.__str__ 这样执行
    
    # 对于__str__ 和 __repr__ 都存在的话,print会先找__str__,如果没有__str__就执行__repr
    
    # 定义format显示方式的字典
    format_dic = {
        'y-m-d': '{0.year}-{0.month}-{0.day}',
        'm-d-y': '{0.month}-{0.day}-{0.year}'
    }
    print(format(f1))  # 当使用format方法时会调用__format__方法,并按我们定义的显示方式显示
  • 相关阅读:
    Easyui 表格底部加合计
    jQuery设置checkbox 为选中状态
    HTML 列表中的dl,dt,dd,ul,li,ol区别
    jQuery的toggle事件
    EasyUI 的日期控件单击文本框显示日历
    HTML设置span宽度
    JQuery获取与设置select
    生命周期
    钩子函数
    组件
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9470566.html
Copyright © 2011-2022 走看看