Bunun pylint
ve 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 convention
s 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, pylint
oranlar bu kod -21.67 / 10
, öncelikle düşündüğü için more_methods
ve related_methods
yok self
veya nitelikleri otherfunc
, stack
, annd my_var
kodu çalıştırmadan, bu görünüşte göremiyorum çünkü related_methods
ve more_methods
karma-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_methods
bunun 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 pylint
benim bir sınıf hakkında o devralır söyle unittest.TestCase
kullandığı o self.assertEqual
, (bir şey sadece tanımlanan unittest.TestCase
), bu yok değil şikayetçi.
Karışımlar pitonik mi yoksa cesaretsiz mi?