python - पाइलिंट के "बहुत-बहुत-उदाहरण-विशेषता" संदेश से कैसे निपटें?




instance-variables pylint (2)

मैंने अभी पाइलिंट के साथ कुछ कोड लिंट करने की कोशिश की है, और अंतिम शेष त्रुटि है

R0902: too-many-instance-attributes (8/7)

मैं उदाहरण विशेषताओं की संख्या को सीमित करने के पीछे तर्क को समझता हूं, लेकिन सात थोड़ा कम लगता है। मुझे यह भी एहसास है कि लिंटर के पास अंतिम शब्द नहीं होना चाहिए। हालांकि, मैं यह जानना चाहूंगा कि इसके बजाय मुझे क्या करना चाहिए:

def __init__(self, output_file=None, output_dir=None):
    """
    Set the frobnicator up, along with default geometries
    """

    self.margin = 30

    self.pos = [0, 0]
    self.sep = [5, 5]

    self.cell = [20, 20]

    self.frobbr = library.Frobbr()

    page = self.frobbr.get_settings('page')

    self.lim = [page.get_width() - self.margin,
                page.get_height() - self.margin]

    self.filename = output_file
    self.moddir = output_dir

क्या मुझे जियोमेट्रीज़ को एक तानाशाह में पैकेज करना चाहिए, पाइलिंट को शिकायत करने से रोकने के लिए कुछ और करना चाहिए, या बस इसे अनदेखा करना चाहिए (जो मैं वास्तव में नहीं करना चाहता)?


जीरो पिरियस का जवाब एक अच्छा है। उन्होंने कहा, चूंकि आप अपनी init पद्धति में थोड़ा संदर्भ प्रदान करते हैं, वास्तविक वर्ग का नाम भी नहीं, इसलिए सकारात्मक होना मुश्किल है, लेकिन मैं कहूंगा कि फ़ाइल नाम और moddir का अलग-अलग मार्जिन, स्थिति आदि से कोई लेना-देना नहीं है।

IO संचालन अक्सर विधियों में डालने के बजाय फ़ंक्शंस में सर्वश्रेष्ठ रूप से पृथक होते हैं। उनके अक्सर कई अलग-अलग प्रारूप और क्रमांकन विकल्प होते हैं, और अधिकांश समय आप उन्हें अपने ऑब्जेक्ट लॉजिक (तरीकों) के साथ मिश्रण नहीं करना चाहते हैं। एक नया IO फ़ंक्शन जोड़ना आसान है जो कुछ फ़ाइल, स्ट्रिंग, ब्लॉब या जो कुछ भी लेता है और ऑब्जेक्ट को इसमें एनकोड करता है, उसे वापस करने के लिए एक ऑब्जेक्ट बनाए रखना है जिसमें कई विधियां हैं जो कई अलग-अलग IO ऑपरेशन को संभालती हैं।


यह एक वैचारिक आपत्ति है, लेकिन व्यक्तिगत रूप से मैं इस तरह के बदलावों को यथासंभव सार्वभौमिक बनाने की कोशिश करता हूं। यदि 7 एक फ़ाइल में पर्याप्त उदाहरण नहीं है, और मैं इसे यहां अनुमति देने के लिए चुनता हूं, तो हर जगह क्यों नहीं? मैं हमेशा बोर्ड भर में एक प्रकार का वृक्ष नियमों में बदलाव नहीं करता, लेकिन मैं कम से कम इस पर विचार करता हूं। उस छोर तक, यदि आप अपने बोर्ड में परिवर्तन करना चाहते हैं, तो अपनी .pylintrc फ़ाइल में डेस्ज़ाइन सेक्शन में max-attributes=7 बदलें।

जब से मुझे लगता है कि 7 बोर्ड भर में थोड़ा कम है, मैं बदल गया:

[DESIGN]
max-attributes=7

सेवा मेरे

max-attributes=12




code-structure