Learn Special Methods by Building a Vector Space - Step 50

Tell us what’s happening:

i’m confused on what it is im doing wrong someone please point it out the hints are just saying declare variable v4 and assign it the difference between v1 and v2 which ive obviously done

Your code so far

class R2Vector:
    def __init__(self, *, x, y):
        self.x = x
        self.y = y

    def norm(self):
        return sum(val**2 for val in vars(self).values())**0.5

    def __str__(self):
        return str(tuple(getattr(self, i) for i in vars(self)))

    def __repr__(self):
        arg_list = [f'{key}={val}' for key, val in vars(self).items()]
        args = ', '.join(arg_list)
        return f'{self.__class__.__name__}({args})'

    def __add__(self, other):
        if type(self) != type(other):
            return NotImplemented
        kwargs = {i: getattr(self, i) + getattr(other, i) for i in vars(self)}
        return self.__class__(**kwargs)

    def __sub__(self, other):
        if type(self) != type(other):
            return NotImplemented
        kwargs = {i: getattr(self, i) - getattr(other, i) for i in vars(self)}
        return self.__class__(**kwargs)

class R3Vector(R2Vector):
    def __init__(self, *, x, y, z):
        super().__init__(x=x, y=y)
        self.z = z



v1 = R2Vector(x=2, y=3)
v2 = R2Vector(x=0.5, y=1.25)
print(f'v1 = {v1}')
print(f'v2 = {v2}')
v3 = v1 + v2
print(f'v1 + v2 = {v3}')
v4 = v2 - v1
print(f'v2 - v1 = {v4}')




Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36

Challenge Information:

Learn Special Methods by Building a Vector Space - Step 50
https://www.freecodecamp.org/learn/scientific-computing-with-python/learn-special-methods-by-building-a-vector-space/step-50`Preformatted text`

ive done it but dont understand how

i dont understand why its v1-v2 thats a logic fail

Instructions ask you to assign it the difference between v1 and v2, which is v1 - v2.
The difference between v2 and v1 would be v2 - v1.

The result of these two operation is different. v1 - v2 = -1 * (v2 - v1)

1 Like