class School: def __init__(self,name,addr,type): self.name=name self.addr=addr self.type=type def __repr__(self): return 'School(%s,%s)' %(self.name,self.addr) def __str__(self): return '(%s,%s)' %(self.name,self.addr) def __add__(self, other): return School(self.name + other,'henan','daxue') ''' str函数或者print函数--->obj.__str__() repr或者交互式解释器--->obj.__repr__() 如果__str__没有被定义,那么就会使用__repr__来代替输出 注意:这俩方法的返回值必须是字符串,否则抛出异常 两个方法并没有太大的区别 ''' school = School('农大','河南','大学') # 我们没有定义__str__,__repr__时,返回是这样的 # <__main__.School object at 0x000001D5E3623358> print(school) # 两个都定义时 print(school) # (农大,河南) # 只有__repr__时 print(school) # School(农大,河南) # 当对象有 + 操作时,会调用__add__方法 # 只能写成school + 'henan' # 不能写成‘henan’ + school school1 = school + 'henan' print(school1)