Bunun pylintve diğer statik analiz araçlarının her şeyi bilmediğini ve bazen onların tavsiyelerine uyulmaması gerektiğinin farkındayım. (Bu sadece conventions için değil, çeşitli mesaj sınıfları için geçerlidir .)
Eğer sınıflarım varsa
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()
Açıkçası, bu karar verildi. İsterseniz, daha iyi bir örnek .
Bu stile "mixins" kullanılarak çağrıldığına inanıyorum.
Diğer araçlar gibi, pylintoranlar bu kod -21.67 / 10, öncelikle düşündüğü için more_methodsve related_methodsyok selfveya nitelikleri otherfunc, stack, annd my_varkodu çalıştırmadan, bu görünüşte göremiyorum çünkü related_methodsve more_methodskarma-in vardır implement_methods.
Derleyiciler ve statik analiz araçları Halting Sorunu'nu her zaman çözemezler , ancak bunun kesinlikle kalıtsal olanlara bakmanın implement_methodsbunun mükemmel bir şekilde geçerli olduğunu göstereceğini ve bunun yapılması çok kolay bir şey olduğunu gösterdiği bir durum olduğunu düşünüyorum.
Statik analiz araçları neden bu geçerli (bence) OOP modelini reddediyor?
Ya:
Mirası kontrol etmeye bile çalışmıyorlar ya da
karışımlar deyimsel, okunabilir Python ile cesareti kırılmıştır
1. soruyorum çünkü eğer belli ki yanlıştır pylintbenim bir sınıf hakkında o devralır söyle unittest.TestCasekullandığı o self.assertEqual, (bir şey sadece tanımlanan unittest.TestCase), bu yok değil şikayetçi.
Karışımlar pitonik mi yoksa cesaretsiz mi?

