python学习之__str__,__repr__

__str__(sekf) 类里没有定义这个方法,类的实例显示内存地址
__str__(self) 类里有定义这个方法,类的实例显示具体属性值
__repr__(self) 在解释器中有用
str函数或者print函数--->obj.__str__()
repr或者交互式解释器--->obj.__repr__()
如果__str__没有被定义,那么就会使用__repr__来代替输出
注意:这俩方法的返回值必须是字符串,否则抛出异常

# l=list('hello')
#
# print(l)
# file=open('test.txt','w')
# print(file)

class Foo:
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return '名字是%s 年龄是%s' %(self.name,self.age)
#
# f1=Foo('egon',18)
# print(f1) #str(f1)--->f1.__str__()
#
# x=str(f1)
# print(x)
#
# y=f1.__str__()
# print(y)


class Foo:
def __init__(self,name,age):
self.name=name
self.age=age
# def __str__(self):
# return '折是str'
def __repr__(self):
return '名字是%s 年龄是%s' %(self.name,self.age)

f1=Foo('egon',19)
#repr(f1)---->f1.__repr__()
print(f1) #str(f1)---》f1.__str__()------>f1.__repr__()

原文地址:https://www.cnblogs.com/jinpingzhao/p/12771716.html