Saya sepenuhnya menyadari hal itu pylintdan alat analisis statis lainnya tidak semuanya tahu, dan kadang-kadang saran mereka harus tidak taat. (Ini berlaku untuk berbagai kelas pesan, bukan hanya conventions.)
Jika saya punya kelas suka
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()
Jelas, itu dibuat-buat. Ini contoh yang lebih baik, jika Anda suka .
Saya percaya gaya ini disebut menggunakan "mixins".
Seperti alat-alat lain, pylinttingkat kode ini di -21.67 / 10, terutama karena berpikir more_methodsdan related_methodstidak memiliki selfatau atribut otherfunc, stack, annd my_varkarena tanpa menjalankan kode, itu tampaknya tidak bisa melihat related_methodsdan more_methodsdicampur-in ke implement_methods.
Kompiler dan alat analisis statis tidak selalu dapat menyelesaikan Masalah Pemutusan , tetapi saya merasa ini jelas merupakan kasus di mana melihat apa yang diwarisi oleh implement_methodsakan menunjukkan ini benar-benar valid, dan itu akan menjadi hal yang sangat mudah untuk dilakukan.
Mengapa alat analisis statis menolak pola OOP yang valid ini (menurut saya)?
Antara:
Mereka bahkan tidak mencoba memeriksa warisan atau
mixin tidak disarankan menggunakan Python idiomatis dan mudah dibaca
# 1 jelas salah karena jika saya meminta pylintuntuk memberi tahu saya tentang kelas saya yang mewarisi unittest.TestCaseyang menggunakan self.assertEqual, (sesuatu yang didefinisikan hanya dalam unittest.TestCase), itu tidak mengeluh.
Apakah mixin unpythonic atau berkecil hati?

