from es35 import Punto

class Punto3D(Punto):
    def __init__(self, x, y, z):
        Punto.__init__(self, x, y)
        self.z = z

    def __repr__(self):
        return "Punto: x = %d, y = %d, z = %d" % (self.x, self.y, self.z)

    def __add__(self, valore):
        if type(valore) is Punto3D:
            return Punto3D(self.x + valore.x, self.y + valore.y, self.z + valore.z)
        if type(valore) is Punto:
            return Punto3D(self.x + valore.x, self.y + valore.y, self.z)
        if type(valore) is int:
            return Punto3D(self.x + valore, self.y + valore, self.z + valore)
        return NotImplemented

    __radd__ = __add__

## ----- main -----
if __name__ == "__main__":

    p1 = Punto3D(10, 20, 30)
    print p1

    p2 = Punto3D(1,2,3)
    print p2
    
    print p1 + p2
    print p1 + Punto(5,6)
    print p1 + 4
    print 4 + p1





