You need to call the list initializer:
class MyList(list):
def __init__(self, li):
super(MyList, self).__init__(li)
Assigning to self
in the function just replaces the local variable with the list, not assign anything to the instance:
>>> class MyList(list):
... def __init__(self, li):
... super(MyList, self).__init__(li)
...
>>> ml = MyList([1, 2, 3])
>>> ml
[1, 2, 3]
>>> len(ml)
3
>>> type(ml)
<class '__main__.MyList'>