I can’t seem to clear this step and have read all of the other posts on it, but not understanding exactly what it is that I’m supposed to do.
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
print("loop begins")
def __str__(self):
for i in vars(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/120.0.0.0 Safari/537.36 Edg/120.0.0.0
Challenge Information:
Learn Special Methods by Building a Vector Space - Step 23
This is pretty close, but you need to return a generator object, not use a loop like this.
You can see you have “for” twice which implies two loops, which is not necessary. Basically you need to make a list comprehension, which you’ve done on the second line.
Delete this line:
for i in vars(self):
The expression here should be getattr(self, i), that’s a complete expression by itself and you can’t break it up.
return getattr(self, (i for i in vars(self)))
then put the comprehension in brackets to make it a generator: