1 format_dic = { #创建日期模式字典 2 'ymd':'{0.year}{0.month}{0.day}', #0.xx可以,a.xx不行? 3 'mdy':'{0.year}:{0.month}:{0.day}', 4 'ymdo':'{0.year}-{0.month}-{0.day}' 5 } 6 class Foo: 7 def __init__(self,year,month,day): 8 self.year = year 9 self.month = month 10 self.day = day 11 def __format__(self, format_spec): #传入的'ymdo'将会赋值给format_apec 12 # print('This is format') 13 if not format_spec or format_spec not in format_dic: #判断,如果用户没输入则默认是'ymd',输入错误也是默认'ymd' 14 format_spec = 'ymd' 15 # fm = format_dic[format_spec] #通过字典format_dic将format_apec对应的value取出 16 # return fm.format(self) #返回出去 17 return format_dic[format_spec].format(self) #同上 18 19 f1 = Foo(2018,11,11) 20 print(format(f1,"ymdo"))
补充一点format以防忘记
1 f1 = Foo(2018,11,11) 2 print(format(f1,"ymdo")) 3 a = '{1}qwer{0}'.format('XX','QQ') 4 print(a) 5 a = '{1}qwer{0}' 6 a = a.format('XX','YY') 7 print(a.format('XX','YY')) #YYqwerXX 8 print(a) #YYqwerXX