Я работал над классом со свойствами, но мы столкнулись с неприятной проблемой с 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, скрывает этот метод