Pylint false positives
Terry Reedy
tjreedy at udel.edu
Tue Aug 14 17:42:14 EDT 2018
On 8/14/2018 5:05 AM, Thomas Jollans wrote:
> On 2018-08-14 09:38, Frank Millman wrote:
>> Hi all
>>
>> Pylint is flagging a lot of lines as errors that I would consider to be
>> acceptable.
>>
>> I have an abstract class ClassA with a number of concrete sub-classes.
>> ClassA has a method which invokes 'self.method_b()' which is defined
>> separately on each sub-class. Pylint complains that "Instance of
>> 'ClassA' has no 'method_b' member".
>>
>> First question - as a matter of style, is Pylint correct? If so, I could
>> define 'method_b' in ClassA and raise NotImplementedError. Is this
>> considered more pythonic? The downside is that I have quite a few of
>> them, so it would add some clutter.
If I were reading you class, I would like to see all methods defined
there. If you went the old NotImplemented(Error) route, you could avoid
cluttter with
method_c = method_d = method_e = method_b
but I would also want docstrings. At that point, I would consider
abstractmethod. But I have not used that, not seen an stdlib class that
does.
> I wouldn't say it's unpythonic per se, but if your ClassA is logically
> an abstract base class that requires certain methods to be implemented
> in subclasses, then it's probably clearer to use Python's abc [1]
> facilities, and declare your abstract methods as actual abstractmethods.
>
> [1]: https://docs.python.org/3/library/abc.html
>
> i.e.
>
> from abc import ABC, abstractmethod
> class ClassA(ABC):
> def do_stuff(self):
> return self.method_b(42)**3
>
> @abstractmethod
> def method_b(self, answer):
> """
> This is a great place to put a docstring
> """
>
> You *can* raise NotImplementedError in your abstractmethods, but I don't
> think it's really necessary. You need a statement in the method body of
> course, but since you're going to put a docstring there anyway (right?),
> that's already taken care of.
>
> -- Thomas
>
>
>> Second question - if my present code is not unpythonic, is there an easy
>> way to suppress the error messages, without disabling 'no-member'
>> altogether?
--
Terry Jan Reedy
More information about the Python-list
mailing list