python - name - pylint 警告




Pylintの「インスタンス属性が多すぎます」メッセージを処理するにはどうすればよいですか? (2)

私はちょうどPylintでいくつかのコードを書こうとしましたが、最後の残りのエラーは

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が不平を言うのを止めるために何か他のことをするか、それを無視してください(私は本当にやりたくない)?


Zero Piraeusからの答えは良いものです。 つまり、実際のクラス名ではなく、 initメソッドにコンテキストをほとんど提供していないので、肯定するのは難しいですが、filenameとmoddirはマージン、位置などを除いて何もしません

IO操作は、多くの場合、メソッドに入れるのではなく、関数に最もよく分離されます。 多くの場合、さまざまな形式とシリアライズオプションがありますが、ほとんどの場合、それらをオブジェクトロジック(メソッド)と混用する必要はありません。 何らかのファイル、文字列、BLOBなどをとり、多くの異なるIO操作を処理する多くのメソッドを持つオブジェクトを維持するよりも、それにエンコードされたオブジェクトを返す新しいIO関数を追加する方が簡単です。


これはイデオロギー的な異論ですが、個人的に私はこれらの変化を可能な限り普遍的にしようとしがちです。 1つのファイルに7のインスタンスが十分ではなく、私がここでそれを許可することを選択した場合、どうしてそうではありませんか? 私はリントルールを常に全面的に変更するわけではありませんが、少なくともそれについて検討します。 そのために、ボード全体を変更したい場合は、.pylintrcファイルのDESIGNセクションでmax-attributes=7変更します。

私は7がボード全体で少し低いと思うので、私は変更しました:

[DESIGN]
max-attributes=7

max-attributes=12




code-structure