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))