Pyflakes nie zajmują bardzo dobrze z następującego kodu:fix pyflakes zajmujące się @property setter dekoratora
@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
Korzystanie vim i syntastic który wykorzystuje pyflakes pojawia się następujący błąd:
W806 redefinition of function 'nodes' from line 5
Tak Otrzymuję ostrzeżenia o @nodes.setter
, ponieważ przedefiniowuję nodes
.
Jak wyłączyć to niepotrzebne ostrzeżenie, ponieważ ten kod jest poprawny? Lub który pyton kontroler obsługuje ten kod poprawnie?
Aktualizacja
wpadłem na pewne problemy, kiedy refactored mojego kodu, ponieważ właściwości i funkcje mają różne zachowania spadków. Dostęp do właściwości klasy bazowej jest inny. zobacz:
- 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?
więc teraz unikają tej składni i zamiast korzystać z odpowiednich funkcji.
mój kod zepsuje się, jeśli zastosuje się te "naprawione" grzechy, używam przesłonięcia '__setattr__', gdzie wywołanie' Object .__ setattr__' nie powiedzie się, jeśli zmienię nazwę metody ustawiającej. Nie można znaleźć metody węzłów. – Stephan
Nie możesz wykonać tego za pomocą polecenia 'del _nodes_setter' –