Andrei Oprescu9,546 Points
I am getting a RecursionError
I am on this question that says:
Now I want you to make a subclass of list. Name it Liar.
Override the len method so that it always returns the wrong number of items in the list. For example, if a list has 5 members, the Liar class might say it has 8 or 2.
You'll probably need super() for this.
And my code is:
class Liar(list): def len(self, *args, **kwargs): super().len(*args, **kwargs) return len(self) - 1
Can someone tell me what i did wrong with my code?
class Liar(list): def __len__(self, *args, **kwargs): super().__len__(*args, **kwargs) return len(self) - 3
Steven Parker171,345 Points
Since you're defining how the class will handle being asked for its length, then calling "len" from inside the code sets up a recursion loop. You probably want to only call the "super" length function and return a modified version of it.