2011-06-11 14 views
5

में __dict__ वर्ग चर के निर्माण को दबाकर मुझे उस गेम में एक मुश्किल समस्या है जिसमें मैं काम कर रहा हूं। मैं इसे विकसित करने के लिए Pygame का उपयोग कर रहा हूँ। मैं उन डेवलपर्स में से एक बनता हूं जो कभी भी डिफ़ॉल्ट __dict__ ऑब्जेक्ट वेरिएबल का उपयोग नहीं करते हैं; ऑब्जेक्ट के चर के स्पष्टीकरण के लिए मैं हमेशा __slots__ परिभाषित करता हूं (मेरे पास एक क्लासमेड है जो कॉन्फ़िगरेशन फ़ाइल से आवश्यक चर निर्धारित करने के लिए स्लॉट पढ़ता है)।पायथन - एक subclass

वैसे भी, मुझे अभी एहसास हुआ कि यह प्रयास मेरी कुछ कक्षाओं में काम नहीं कर रहा है; उनके पास अभी भी __dict__ वैरिएबल है और इसमें मनमाने ढंग से गुण दिए जा सकते हैं, भले ही वे स्पष्ट रूप से __slots__ को परिभाषित करते हैं। मुझे लगता है कि ऐसा इसलिए है क्योंकि वे pygame.sprite.Sprite से विरासत में हैं, जिसमें __dict__ है। यदि ऐसा है, तो मैं इस निर्देश के निर्माण को कैसे दबा सकता हूं? (हालांकि स्पष्ट रूप से __slots__ को परिभाषित करना था) या क्या मुझे कारण के बारे में गलत हो सकता है? किसी भी अंतर्दृष्टि के लिए धन्यवाद; खोजों के माध्यम से इस विशेष समस्या के बारे में जानकारी प्राप्त करना मुश्किल है।

+0

यदि आप कारण बताते हैं कि आप ऐसा कर रहे हैं, तो बेहतर समाधान हो सकता है। – ninMonkey

उत्तर

6

मनमाना विशेषताओं और उनमें से __dict__ कंटेनर को दबाने के लिए एक ही रास्ता, __slots__ उपयोग करने के लिए के रूप में आप कर रहे हैं और एक वर्ग है कि एक ही करता है से विरासत है। __dict__ में एक वर्ग का उप-वर्ग हमेशा __dict__ होगा। इसके आस-पास एकमात्र तरीका इस वर्ग से प्राप्त नहीं होना है (लेकिन, उदाहरण के लिए, composition का उपयोग करें।)

+0

आह, यह दुर्भाग्यपूर्ण है। शीघ्र जवाब देने के लिए ध्न्यवाद। – dpitch40

संबंधित मुद्दे