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

 

posted @ 2018-10-14 23:49  Meanwey  阅读(365)  评论(0编辑  收藏  举报