Pyflakes does not deal very well with the following code:
@property
def nodes(self):
return self._nodes
@nodes.setter
def nodes(self, nodes):
"""
set the nodes on this object.
"""
assert nodes != [] # without nodes no route..
self.node_names = [node.name for node in nodes]
self._nodes = nodes
Using vim and syntastic which uses pyflakes I get the following error:
W806 redefinition of function 'nodes' from line 5
So I get warnings about @nodes.setter
because I redefine nodes
.
How do I disable this useless warning since this code is correct? Or which python checker deals with this code correctly?
Update
I ran into some problems when I refactored my code because properties and functions have different inheritance behavior. Accessing properties of a base class is different. see:
- How to call a property of the base class if this property is being overwritten in the derived class?.
- Python derived class and base class attributes?
so I now tend to avoid this syntax and use proper functions instead.
__setattr__
where theObject.__setattr__
call I make fails if I rename the setters method. It cannot find the nodes method. – Kight