나는 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()
분명히, 그것은 고안되었습니다. 원하는 경우 더 좋은 예가 있습니다 .
이 스타일은 "mixins"를 사용한다고합니다.
다른 도구와 마찬가지로, pylint
요금이 코드는 -21.67 / 10
주로는 생각 때문에 more_methods
그리고 related_methods
이없는 self
나 속성 otherfunc
, stack
,하는 Nd my_var
코드를 실행하지 않고, 그것은 분명히 볼 수 없기 때문에 related_methods
와 more_methods
혼합에에 있습니다 implement_methods
.
컴파일러와 정적 분석 도구가 항상 Halting Problem을 해결할 수 는 없지만 상속 된 implement_methods
것을 보면 이것이 완전히 유효하다는 것을 알 수 있습니다. 매우 쉬운 일이라고 생각합니다.
정적 분석 도구가이 유효한 OOP 패턴을 거부하는 이유는 무엇입니까?
어느 한 쪽:
그들은 심지어 상속을 확인 하려고 시도 하지 않거나
믹스 인은 관용적이고 읽기 쉬운 파이썬에서는 사용하지 않는 것이 좋습니다
# 1 (에만 정의 된 것을 사용 pylint
하는)을 상속받는 내 클래스에 대해 말하면 불평 하지 않기 때문에 분명히 잘못되었습니다 .unittest.TestCase
self.assertEqual
unittest.TestCase
믹스 인은 비 피톤 적이거나 낙담합니까?