私はpylint
、他の静的分析ツールがすべてを知っているわけではないことを完全に認識しています。(これは、convention
s だけでなく、さまざまなクラスのメッセージに適用されます。)
私のようなクラスがある場合
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.TestCase
self.assertEqual
unittest.TestCase
ミックスインは非Pythonpythonですか、落胆しますか?