Question

Je pylint remarqué ne gère pas bien le cas:

@property
def foo(self):
   return self._bar.foo

@foo.setter
def foo(self, foo_val):
   self._bar.foo = foo_val

Bien qu'il soit une syntaxe de cas parfaitement valable depuis python2.6

Il dit que je défini foo deux fois, et ne comprend pas la syntaxe ".setter" (Donne E1101 & E0102).

Y at-il une solution de contournement pour cela sans avoir à modifier le code? Je ne veux pas désactiver les erreurs car ils sont importants pour d'autres endroits.

Y at-il un autre outil que je peux utiliser qui gère mieux? Je l'ai déjà vérifié pyflakes et il se comporte de la même manière. L'analyse de code PyDev semble traiter ce cas spécifique mieux, mais il ne vérifie pas les conventions, refactoring, et d'autres frais caractéristiques pylint fait, et je ne peux pas l'exécuter à partir d'un script externe (ou puis-je ??)

Merci!

Était-ce utile?

La solution

Ceci est un billet http://www.logilab.org/ticket/51222 sur la projet pylint. Surveiller l'état est tout.

Autres conseils

Si vous ne souhaitez pas désactiver les erreurs au niveau mondial, vous pouvez les désactiver pour ces lignes spécifiques, par exemple:

def foo(self, foo_val): # pylint: disable-msg=E0102

Huh. Énervant. Et tous les principaux outils que je pouvais trouver (pyflakes, pylint, pychecker) présentent ce problème. On dirait que le problème commence dans le code octet, mais je ne peux pas obtenir dis pour me donner un code d'octets pour les propriétés d'objet.

Il semble que vous seriez mieux si vous avez utilisé cette syntaxe:

# Changed to longer member names to reduce pylint grousing
class HughClass(object):
    def __init__(self, init_value):
        self._hugh = init_value
    def hugh_setter(self):
        return self._hugh * 2
    def hugh_getter(self, value):
        self._hugh = value / 2
    hugh = property(hugh_getter, hugh_setter)

Voici un bel article de blog dessus. LOL-citation:

  

accesseurs appartiennent à la triste   monde de Java et C ++.

signalé comme un bogue dans pyflakes , et il semble être fixé dans le coffre courant. Donc je suppose que la réponse (maintenant) est: pyflakes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top