Pylint E0202 Ложный Позитив? Или этот кусок кода не так? - PullRequest
6 голосов
/ 09 марта 2012

Я работал над классом со свойствами, но мы столкнулись с неприятной проблемой с pylint (0.25.1). В приведенном ниже коде мы определяем класс со свойством, которое было введено в Python 2.6. Однако Pylint скулит отот факт, что в __init__ метод self.aProperty перезапишет определенный метод с именем aProperty.Я также вставил вывод из консоли и вывод сообщений Pylint.

Это случай «пожалуйста, сообщите разработчикам Pylint» или этот фрагмент (примера) неправильный?

"""example module"""

class Example(object):
    """example class"""

    @property
    def aProperty(self):
        """get"""
        print "using getter"
        return self._myPropertyValue

    @aProperty.setter
    def aProperty(self, value):
        """set"""
        print "using setter"
        self._myPropertyValue = value

    def secondPublicMethodToIgnorePylintWarning(self):
        """dummy"""
        return self.aProperty

    def __init__(self):
        """init"""
        self._myPropertyValue = None

        self.aProperty = "ThisStatementWillRaise E0202"

anExample = Example()
print anExample.aProperty

anExample.aProperty = "Second binding"
print anExample.aProperty

Консольный вывод:

с использованием установщика
с использованием получателя
ThisStatementWillRaise E0202
с использованием установщика
с использованием получателя
Второе связывание

Вывод Pylint:

E0202: 7,4: Example.aProperty: атрибут, затронутый в строке 26 теста1, скрывает этот метод
E0202: 13,4: Example.aProperty:Атрибут, затронутый в строке 26 теста1, скрывает этот метод

1 Ответ

4 голосов
/ 12 марта 2012

см. http://www.logilab.org/ticket/89092, патч скоро будет интегрирован в pylint, чтобы исправить это pb

...