Learn Special Methods by Building a Vector Space - Step 42

Tell us what’s happening:

I can obviously see that I don’t know what I am doing here. The test is too wordy. I will appreciate a hint because I am not understanding theirs.

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:i+other 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 (Windows NT 10.0; Win64; x64) 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

You’ll need to use getattr().

Look at def __str__(self): for a clue on how to implement this.

At the end this was the solution removed

Please don’t post solution code, thanks!

We are trying to cut back on the number of spoiler solutions found on the forum and instead focus on helping other campers with their questions and definitely not posting full working solutions.

Mistake noted. I was not aware of that.

1 Like