Python进阶-通过类的__format__自定义格式化字符串

__format__方法可以自定格式化字符串,不定义的话会执行默认格式
format(obj) 等同于--> obj.__format__

format_dic = {
    'y-m-d':'{obj.year}-{obj.mon}-{obj.day}',
    'd/m/y':'{obj.day}/{obj.mon}/{obj.year}'
}
class Date:
    def __init__(self,year,mon,day):
        self.year = year
        self.mon = mon
        self.day = day
    def __format__(self, format_spec):   #自定制格式化
        if not format_spec or format_spec not in format_dic:  
        #用于判断用于是否输入格式信息或者输入的不在格式信息字典内
            format_spec = 'y-m-d'           #制定默认格式
        fm = format_dic[format_spec]        #通过格式字典取到对应的值
        return fm.format(obj = self)       
        #'{obj.year}-{obj.mon}-{obj.day}'.format(obj) obj应是实例化对象

d = Date(2018,10,14)
x = format(d,'y-m-d')
print(x)        #2018-10-14
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 字符串拼接在golang中是非常常见的操作,本文介绍几种常用方法并分析各种方法的效率. 拼接 + 号拼接 + 号拼...
    我傻笑你跑掉阅读 4,852评论 4 0
  • 过节吃的肉太多,今天来点素的~蘑菇白菜腊肠+一个馒头!
    深情款款_5c6d阅读 111评论 0 0
  • 今天看了这个代码不知道是干嘛的,看到了 stackoverflow 上的回答,仍旧没有理解作用是什么?什么时候用?...
    yztldxdzhu阅读 412评论 0 0
  • 0点 支付宝 线下扫码半价,最高-20 7月5日-8月26日,总共8周,每个银行8个活动日; 每周三-周六,用户选...
    不正常生物研究中心阅读 974评论 4 16