Learn Special Methods by Building a Vector Space - Step 23

Tell us what’s happening:

hi, everyone. I got stuck here and I don’t understand how to fix my codes. can anyone help? thanks so much!

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

# User Editable Region

    def __str__(self):
        return 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(v1.norm())
print(v2.norm())

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 Edg/127.0.0.0

Challenge Information:

Learn Special Methods by Building a Vector Space - Step 23

Same problem here:
https://forum.freecodecamp.org/t/learn-special-methods-by-building-a-vector-space-step-23/703068

My answer from that thread:

This is very close there is just a problem with the way you are placing the brackets.
I’m not sure exactly how to describe this:

Your generator cannot be inside the getattr() because the generator will generate all it’s values and then execute getattr() once.

getattr() needs to be within your generator expression so it executes for every value of i

Basically you just need to adjust your brackets.