私はPylintでいくつかのコードをlintしてみましたが、最後に残ったエラーは
R0902: too-many-instance-attributes (8/7)
インスタンス属性の数を制限する理由は理解できますが、7 個というのは少し少ないように思えます。また、リンターが最終的な決定権を持つべきではないことも理解しています。ただし、代わりに何をすべきかを知りたいと思います。
def __init__(self, output_file=None, output_dir=None):
"""
Set the frobnicator up, along with default geometries
"""
self.margin = 30
self.pos = [0, 0]
self.sep = [5, 5]
self.cell = [20, 20]
self.frobbr = library.Frobbr()
page = self.frobbr.get_settings('page')
self.lim = [page.get_width() - self.margin,
page.get_height() - self.margin]
self.filename = output_file
self.moddir = output_dir
ジオメトリを辞書にパッケージ化すべきでしょうか、それとも Pylint のエラーを止めるために何か他のことをするべきでしょうか、それとも単に無視するべきでしょうか (これはあまりしたくありません)?
ベストアンサー1
リンターの役割は、コードに潜在する問題を認識させることであり、質問にあるように、リンターが最終的な決定を下すべきではありません。
pylint の指示を考慮し、このクラスに対して、持っている属性が適切であると判断した場合 (これは妥当なように思われます)、クラスに無効化コメントを追加することで、エラーを抑制し、問題を考慮したことを示すことができます。
class Frobnicator:
"""All frobnication, all the time."""
# pylint: disable=too-many-instance-attributes
# Eight is reasonable in this case.
def __init__(self):
self.one = 1
self.two = 2
self.three = 3
self.four = 4
self.five = 5
self.six = 6
self.seven = 7
self.eight = 8
そうすれば、Pylint を無視したり、その奴隷になったりするのではなく、役に立つけれども誤りのあるツールとして Pylint を使用することになります。
デフォルトでは、ローカルでチェックを無効にすると、Pylint は情報メッセージを生成します。
Locally disabling too-many-instance-attributes (R0902) (locally-disabled)
予防できるそれメッセージは、次の 2 つの方法のいずれかで表示されます。
pylint を実行するときにフラグを追加します
disable=
。$ pylint --disable=locally-disabled frob.py
設定ファイルにディレクティブを追加します
pylintrc
。[MESSAGES CONTROL] disable = locally-disabled