# 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.

``````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

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

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