class Programer(object): def __init__(self,name,age): self.name = name if isinstance(age, int): self.age = age else: raise Exception('age must be int') def __eq__(self, other): if isinstance(other, Programer): if self.age == other.age: return Ture else: return False else: raise Exception('the type of object must be Programer') def __add__(self, other): if isinstance(other,Programer): return self.age + other.age else: raise Exception('the type og object must be Programer') if __name__ == '__main__': p1 = programer('abc', 54) p2 = programer('bbb', 25) print p1 == p2 print p1.age + p2.age
关键点不明白,p1,p2都是 Programer 的实例,当调用 __eq__ 和 __add__ 方法的时候,self 是 指的实例, 为什么是 p1 而不是 p2 , p2 又是如何 被传进去变成 other 的 还望老师解答一二
self也可以是p2啊,两个实例运算,它会在当前类中找出重写的方法进行计算,没有的话就会在父类寻找