मुझे पूरी तरह से पता है कि pylintऔर अन्य स्थैतिक विश्लेषण उपकरण सभी जानते नहीं हैं, और कभी-कभी उनकी सलाह की अवज्ञा की जानी चाहिए। (यह विभिन्न वर्गों के संदेशों के लिए लागू होता है, न कि सिर्फ conventionएस के लिए।)
अगर मेरे पास कक्षाएं हैं
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, my_varक्योंकि कोड को चलाने के बिना, यह स्पष्ट रूप से नहीं देख सकता है related_methodsऔर more_methodsमिश्रित-में है implement_methods।
संकलक और स्थैतिक विश्लेषण उपकरण हमेशा हलिंग समस्या को हल नहीं कर सकते हैं , लेकिन मुझे लगता है कि यह निश्चित रूप से एक ऐसा मामला है जिसमें implement_methodsयह देखना है कि क्या विरासत में मिला है यह पूरी तरह से वैध है, और यह करना बहुत आसान काम होगा।
स्थैतिक विश्लेषण उपकरण इस वैध (मुझे लगता है) OOP पैटर्न को अस्वीकार क्यों करते हैं?
कोई एक:
वे विरासत की जांच करने की कोशिश भी नहीं करते हैं या
मिश्रण मुहावरेदार, पठनीय पायथन में हतोत्साहित किया जाता है
# 1 स्पष्ट रूप से गलत है, क्योंकि अगर मैं pylintमुझे उस वर्ग के बारे में बताने के लिए कहूं जो unittest.TestCaseउस का उपयोग करता है self.assertEqual, (केवल कुछ में परिभाषित है unittest.TestCase), तो यह शिकायत नहीं करता है ।
क्या मिक्स अपच या हतोत्साहित हैं?

