自定义str_repr_format
class Foo: def __init__(self,name,age): self.name = name self.age = age def __str__(self): #自定义类的实例对象打印显示方式 return "这个是str:名字是%s,年龄是%s" %(self.name,self.age) #注意return的是字符串 def __repr__(self): #在解释器中自定义对象的显示方式 return "这个是repr:名字是%s,年龄是%s" %(self.name,self.age) f1 = Foo("sjy",25) print(f1) #打印这个对象,触发的是str(),f1.__str__(),对象默认显示的是对象的内存地址 #如果print找不到自定义的__str__,则会使用__repr__ format_dic = { "ymd":"{0.year}{0.mon}{0.day}", "y-m-d":"{0.year}-{0.mon}-{0.day}", "y:m:d":"{0.year}:{0.mon}:{0.day}" } 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 = "ymd" fm = format_dic[format_spec] #按照key取字典中的值 return fm.format(self) #必须要一个return值 d1 = Date(2019,5,14) print(format(d1))