Learn Special Methods by Building a Vector Space - Step 42

Tell us what’s happening:

Sorry me again:
here we have two operands: self and other, right??
I do not know how to create the sum of the ‘i’ attribute of ‘self’ and the ‘i’ attribute of ‘other’
Can you give me some inputs? Grazie

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})'

# User Editable Region

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

# User Editable Region

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 = R3Vector(x=2, y=2, z=3)
print(f'v1 = {v1}')
print(f'v2 = {v2}')

Your browser information:

User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36

Challenge Information:

Learn Special Methods by Building a Vector Space - Step 42

Hello,
your code is almost correct, you have to add getattr(other, i) to getattr(self, i) to make it work
remember that the other variable represents another instance of the R2Vector class

1 Like

but you deleted getattr so how??