背景:レジスターを備えたチップをモデル化するクラスがあります。チップには多数のレジスターがあり、そのうちの1つは内蔵温度センサーの高温制限です。
私は次のものを持っています:
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の方法」とは何か疑問に思っています。
ありがとう