欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

__str__,__repr__,__add__

程序员文章站 2022-05-18 21:06:23
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,s... ......
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)