Learn Special Methods by Building a Vector Space - Step 54

Tell us what’s happening:

There are no errors, but this doesn´t pass. What am I am missing?

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)

# User Editable Region

    def __mul__(self, other):
        if type(other) in (int, float):
            kwargs = {i: getattr(self, i) * other for i in vars(self)}
            return self.__class__(**kwargs)
        
        elif type(self) == type(other):
            kwargs += {i: getattr(self, i) * getattr(other, i) for i in vars(self)}
            return self.__class__(**kwargs)

# 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 = R2Vector(x=0.5, y=1.25)
print(f'v1 = {v1}')
print(f'v2 = {v2}')
v3 = v1 + v2
print(f'v1 + v2 = {v3}')
v4 = v1 - v2
print(f'v1 - v2 = {v4}')

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36

Challenge Information:

Learn Special Methods by Building a Vector Space - Step 54

Why?

1 Like

Dot product is a scalar, it sums up all the components.

Look again at the 9 characters I quoted. Why did you use them?

1 Like

To sum components. What I am missing?

why += specifically?

1 Like

That doesn’t say why those specific 9 characters though. You are summing into what is currently in kwargs. Why? (Note - just repeating roughly the same answer probably doesn’t move us closer to the root of the issue :slight_smile: )

So it adds component by component?

I took out the “+”, still doesn´t pass.
So how do I add the components? Do I need a different sum?

You need to do both parts of the formula - multiply the pairs of numbers and add them together

1 Like

I have the multiplication, how do I do the adding? Do I need another loop?

remember that a scalar product gives back a number, so you need to rethink a few things of what you are doing

please don’t spam the same thing multiple times, you can say it once and it’s enough. You can update your title. The body of the post has link to step 54, and you edited the title to say step 55 13 hours ago