pylint -- should I just ignore it sometimes?
Alexander Kapps
alex.kapps at web.de
Tue Oct 19 19:33:20 EDT 2010
On 20.10.2010 00:36, Seebs wrote:
> On 2010-10-19, Martin P. Hellwig<martin.hellwig at dcuktec.org> wrote:
>> Well, as with all styles IMHO, if there is a _good_ reason to break it,
>> then by all means do, but you might want to consider putting in a
>> comment why you did that and add the #pylint: disable-msg=<message_id>
>> on that line. If that is overkill, why not just comply to the standard
>> and avoid all the fuzz?
>
> Well, part of what I'm trying to understand is why the standard in question
> says what it says. I'm pretty much mystified by a claim that something with
> seven instance attributes is "too complicated". For instance, I've got a
> class which represents (approximately) a C function, for use in writing
> various wrappers related to it. It has name, return type, args, default
> values, a list of arguments which need various modifications, a default
> return value, and so on... And it ends up with, apparently, 10 instance
> attributes.
>
> I can't tell whether there's actually a general consensus that classes
> should never be nearly that complicated, or whether pylint is being a little
> dogmatic here -- I haven't seen enough other Python to be sure. I'm
> used to having objects with anywhere from two or three to a dozen or more
> attributes, depending on what kind of thing they model. It seems like a
> very odd measure of complexity; is it really that unusual for objects to have
> more than seven meaningful attributes?
>
> -s
The general idea is, that modules, classes, methods, and functions
should be small so they are better reusable, manageable and
understandable. If you have a huge class or function with many
attributes or local variables, it's often a sign, that your
class/function does to much and you better refactor this into
smaller pieces. There isn't and there can't be a general consensus
about /how/ small some part should be.
If pylint complains about too many variables or such, take it as a
hint to rethink your design. If you say, my design is good, then
feel free to ignore the warning.
If your classes wrap some existing datastructure and pyling
complains, take it as a hint (just a hint, not more) that maybe your
underlying datastructure is to complex.
But there are no general rules. In the end you (the programmer) has
to decide how the code or the data is structured, pylint can only
give you hints, that there *may* be a problem.
I don't know why "the standard" (what standard?) says what it says,
but I guess, it's the result of long time experiences and analysis
of existing code. Trust them, unless you are sure to know better.
More information about the Python-list
mailing list