Pythonミックスインはアンチパターンですか?
私はpylint、他の静的分析ツールがすべてを知っているわけではないことを完全に認識しています。(これは、conventions だけでなく、さまざまなクラスのメッセージに適用されます。) 私のようなクラスがある場合 class related_methods(): def a_method(self): self.stack.function(self.my_var) class more_methods(): def b_method(self): self.otherfunc() class implement_methods(related_methods, more_methods): def __init__(self): self.stack = some() self.my_var = other() def otherfunc(self): self.a_method() 明らかに、それは不自然です。あなたが好きなら、これはより良い例です。 このスタイルは「ミックスイン」を使用して呼び出されると思います。 他のツールと同様に、pylintレートでこのコードを-21.67 / 10、主にそれは考えているためmore_methodsとrelated_methods持っていないselfか、属性otherfunc、stack、annd my_varのコードを実行せず、それは明らかに見ることができないためrelated_methodsとmore_methods混合でにしていますimplement_methods。 コンパイラーと静的解析ツールが停止問題を常に解決できるとは限りませんが、これは確かに、継承されたものを見るとimplement_methodsこれが完全に有効であることを示す場合であり、それは非常に簡単なことです。 なぜ静的解析ツールがこの有効な(私が思うに)OOPパターンを拒否するのですか? どちらか: 彼らは継承をチェックしようとさえしません mixinは慣用的で読みやすいPythonでは推奨されません #1は明らかに間違っています。なぜなら、を使用し pylintて継承する私のクラス(でのみ定義されているもの)について教えてもらえば、文句を言わないからです。unittest.TestCaseself.assertEqualunittest.TestCase ミックスインは非Pythonpythonですか、落胆しますか?