Справочная информация: у меня есть класс, моделирующий микросхему с регистрами, микросхема имеет набор регистров, один из которых - предел высокой температуры для встроенного датчика температуры.
У меня есть следующее:
class foo():
def __init__(self):
# does not set self._hiTemp!
...
def setHiTemp(self, t):
self._hiTemp = t
def getHiTemp(self):
return self._hiTemp
def checkHiTemp(self):
return self._temp > self._hiTemp
Причина, по которой я не объявляю self._hiTemp
в __init__
, заключается в том, что пользователь может не заботиться о возможностях чипа, воспринимающих температуру. Пользователь может использовать микросхему по-разному, и бессмысленно придавать этой переменной бессмысленное значение. Однако, если пользователь пытается использовать self._hiTemp
без предварительной установки его, ошибку при использовании необъявленных переменных гораздо легче отладить / отследить, чем какую-то непонятную ошибку, такую как сравнение чисел и None (или в некоторых случаях вообще никаких ошибок).
Все идет нормально, пока я не запустил pylint, и, конечно, я получаю W0201: атрибут, определенный вне init почти везде. Мне просто интересно, не одобряется ли этот стиль кодирования, и если да, то что такое «Pythonic way».
Спасибо