Python Object-Oriented Python Advanced Objects Frustration

Andrei Oprescu
Andrei Oprescu
9,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?

Thanks!

frustration.py
class Liar(list):
    def __len__(self, *args, **kwargs):
        super().__len__(*args, **kwargs)
        return len(self) - 3

1 Answer

Steven Parker
Steven Parker
167,904 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.