Python Object-Oriented Python Advanced Objects Frustration

Manyung Tah
Manyung Tah
6,928 Points

Override the __len__ method.. whats wrong with my code?

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.

Bummer: TypeError: init() missing 1 required positional argument: 'value'
class Liar(list):
    def __init__(self,value):
        self.value = value

    def __len__(self):
        return len(self.value) + 3

1 Answer

Steven Parker
Steven Parker
168,153 Points

The instructions say to "Override the __len__ method", but they do not ask you to override the __init__ method (or to add a required parameter)

Also, when you call the base "len" method, you don't use the value it returns. But you might want to.