Hi Collin,

> $ pylint *.py | grep W0201
> GLError.py:119:12: W0201: Attribute 'message' defined outside __init__ 
> (attribute-defined-outside-init)

This warning is bogus. In a dynamic language like Python, it is
perfectly fine to have a property used only by one method. Only if
it is used by more than one method, would I find it suitable to
declare/initialize it in the constructor.

Your patch is not good, because it increases the code that is
necessary to read, in order to understand the property: before,
it was one method, now it would be the class.

Maybe you can silence the warning by prepending a '_' to the
property name? That would be acceptable.

> GLImport.py:1043:8: W0201: Attribute 'assistant' defined outside __init__ 
> (attribute-defined-outside-init)

Similarly. In the current state, this property could be turned into a
local variable. If you need this attribute in other methods (see the
other thread), please find a good place to initialize it. But the
proposed patch here is not good, as it initializes the same property
twice, and who knows if both initializations are really equivalent?

> GLModuleSystem.py:916:8: W0201: Attribute 'modules' defined outside __init__ 
> (attribute-defined-outside-init)

This part is good; applied.

> GLError seems like it was never completed, since we have the error
> messages repeated under "if __name__ == '__main__':".

I understand the reasoning to have library exception handling in a
different place than program exception handling. But if you can
reasonably improve this part, I'd like to see it.

> We already unnecessarily create a
> GLFileSystem that we don't need to [2] [3]. :)

You're welcome to remove the unneeded property.

Bruno




Reply via email to