Learn Special Methods by Building a Vector Space - Step 24

Tell us what’s happening:

The code has no errors it should work, but for some reason it’s throwing an error

You should pass the expression returned by the str method to the tuple() constructor.

Can someone please help me on this ?

Thank you

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 str(tuple(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/136.0.0.0 Safari/537.36

Challenge Information:

Learn Special Methods by Building a Vector Space - Step 24

You have added code that wasn’t asked for.

Also you are asked to call the tuple constructor and pass the expression you wrote in the previous step as the argument. You’re not asked to change the expression written previously.

Thank you :grinning_face:

Here’s the correct code for anyone’s reference

return str(tuple(getattr(self, i) for i in vars(self)))

that’s still not correct

Please let me know what’s wrong in that ?

you are doing more than what’s written in the instructions

call the tuple() constructor and pass it the generator expression you wrote in the previous step as the argument.