Я работал над классом со свойствами, но столкнулся с неприятной проблемой с 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 Output:
E0202: 7,4:Example.aProperty: Атрибут, затронутый в строке 26 test1, скрывает этот метод
E0202: 13,4:Example.aProperty: Атрибут, затронутый в строке 26 test1, скрывает этот метод