问答详情
源自:4-3 Python面向对象-类与运算符

关于实例p1,p2的指向

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 的 还望老师解答一二

提问者:不奢求却奢望 2017-12-24 16:51

个回答

  • flying的蜗牛
    2017-12-26 17:26:48

    self也可以是p2啊,两个实例运算,它会在当前类中找出重写的方法进行计算,没有的话就会在父类寻找