2011-11-28 16 views
20

इसलिए मैंने पढ़ा है कि आपको गेटटर/सेटर विधियों जैसे object.get_this() या object.set_that(value) के माध्यम से ऑब्जेक्ट विशेषताओं तक पहुंच प्राप्त करना है। क्या यह कोड कक्षाओं के भीतर परिभाषित विधियों के लिए है? या वे केवल ऑब्जेक्ट उदाहरणों के साथ उपयोग करने के लिए हैं। उदाहरण के लिए, यह यह इस तरह से करने के लिए मुहावरेदार,ओओपी: गेटर/सेटर विधियां

class test: 
    def __init__(self,value): 
     self.value = value 
    def get_value(self): 
     return self.value 
    def method(self): 
     return some_operation(self.value) 
get_value() साथ

एक वस्तु उदाहरण के लिए value तक पहुँचने के लिए परिभाषित किया गया है, या get_value() भी वर्ग के तरीकों के भीतर किया जाना चाहिए?

class test: 
    def __init__(self,value): 
     self.value = value 
    def get_value(self): 
     return self.value 
    def method(self): 
     return some_operation(self.get_value()) 
+4

'संपत्ति' अंतर्निहित फ़ंक्शन के लिए जांचें: http://docs.python.org/library/functions.html#property – eumiro

+3

मुझे नहीं पता कि आपने यह कहां पढ़ा है, लेकिन मैं इसे शर्त लगाऊंगा किसी भी पायथन संदर्भ में नहीं था। पायथन में, विपरीत सच है। –

उत्तर

46

पायथन do not use getter/setter methods में। इसके बजाय केवल विशेषता का उपयोग करें, या, अगर आपको प्रत्येक बार विशेषता एक्सेस या सेट करने के लिए कोड की आवश्यकता होती है, तो properties का उपयोग करें।

+19

+1 ऐसा करने के लिए अतिरिक्त कारण: [पायथन जावा नहीं है] (http://dirtsimple.org/2004/12/python-is-not-java.html) – Tadeck

+5

+1 @ टेडके बहुत महत्वपूर्ण बात है "पायथन नहीं है जावा" – BlaShadow

2

मैं किसी ऑब्जेक्ट के गुणों को एक अलग तरीके से एक्सेस नहीं करता जो कि मैं अन्य वस्तुओं से उन तक पहुंचने के तरीकों की अपेक्षा करता हूं। क्यूं कर? मुझे यकीन नहीं है, यह बहुत अजीब लगता है।

यदि आप properties decorator का उपयोग करते हैं तो पाइथन यह वास्तव में आसान बनाता है जो "get_foo"/"set_foo" नामक गेटर्स/सेटर्स की आवश्यकता को समाप्त करता है।

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