Pyflakes不能很好地处理以下代码:
@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
使用vim和使用pyflakes的syntastic我得到以下错误:
W806 redefinition of function 'nodes' from line 5
所以我收到有关
@nodes.setter
的警告,因为我重新定义了nodes
。由于此代码正确,如何禁用此无用的警告?还是哪个python检查器正确处理此代码?
更新
重构代码时遇到了一些问题,因为属性和函数具有不同的继承行为。访问基类的属性是不同的。看:
所以我现在倾向于避免使用这种语法,而改用适当的函数。
最佳答案
可能会在某个时候发布的各种修复程序:
最后一个似乎最接近发行版,因为divmod是PyFlakes的父项目。
除了自己修补软件包之外,您还可以始终解决此问题:
@property
def nodes(self):
return self._nodes
@nodes.setter
def _nodes_setter(self, nodes): # FIXME: pyflakes
...
不幸的是,这将导致类 namespace 的污染。