Search code examples
pythonsubclasspylint

pylint not-an-iterable error when subclassing List[int]


Code example:

from typing import List

class MyList(List[int]):
    def total(self) -> int:
        return sum(i for i in self)

a = MyList([1,2,3])
print(f'{a.total()=:}')

When I run it, it works

a.total()=6

But when I use pylint, I get the following error

...
toy.py:5:30: E1133: Non-iterable value self is used in an iterating context (not-an-iterable)
...

There are other pylint errors, but they're understandable. For the not-an-iterable problem, I don't quite understand it, am I subclassing List[int], correctly?

I'm using Python-3.8, pylint==2.6.0


Solution

  • I upgraded pylint to a more recent version.

    pylint --version    
    pylint 2.9.6
    astroid 2.6.6
    Python 3.8.2 (default, Mar 15 2021, 10:18:42) 
    

    and the error is gone.

    Due to system constraints, I can't upgrade to the very latest version.