2013-06-25 32 views
14

मैं अजगर में एक नौसिखिया हूं। मैं समझ नहीं पा रहा हूं कि समस्या क्या है?विशेषता त्रुटि: 'tuple' ऑब्जेक्ट में कोई विशेषता नहीं है

def list_benefits(): 

     s1 = "More organized code" 
     s2 = "More readable code" 
     s3 = "Easier code reuse" 
     s4 = "Allowing programmers to share and connect code together" 
     return s1,s2,s3,s4 

def build_sentence(): 

     obj=list_benefits() 
     print obj.s1 + " is a benefit of functions!" 
     print obj.s2 + " is a benefit of functions!" 
     print obj.s3 + " is a benefit of functions!" 

print build_sentence() 

त्रुटि मैं हो रही है:

Traceback (most recent call last): 
    Line 15, in <module> 
    print build_sentence() 
    Line 11, in build_sentence 
    print obj.s1 + " is a benefit of functions!" 
AttributeError: 'tuple' object has no attribute 's1' 
+0

कोई भी बिल्कुल ठीक नहीं है..यह केवल फ़ंक्शन को कॉल करता है और वह फ़ंक्शन बाकी – Gogo

+0

करता है जो आपके द्वारा यहां पोस्ट किए गए कोड से संबंधित नहीं है। कुछ और समस्या होनी चाहिए –

+0

पूरा कोड है ... यदि आप चाहें तो लिंक देखें ... [लिंक] (http://codepad.org/yQXHzIbE) – Gogo

उत्तर

11

आप चार चर एस 1, एस 2, एस 3, एस 4 लौटाते हैं और एक परिवर्तनीय ओबीजे का उपयोग करके उन्हें प्रकट करते हैं। इसे tuple कहा जाता है, ओबीजे 4 मानों से जुड़ा हुआ है, s1,s2,s3,s4 के मान। इसलिए, इंडेक्स का उपयोग करें जैसा कि आप इच्छित मूल्य प्राप्त करने के लिए सूची में उपयोग करते हैं।

obj=list_benefits() 
print obj[0] + " is a benefit of functions!" 
print obj[1] + " is a benefit of functions!" 
print obj[2] + " is a benefit of functions!" 
print obj[3] + " is a benefit of functions!" 
6

आप एक tuple लौट रहे हैं। सूचकांक

obj=list_benefits() 
print obj[0] + " is a benefit of functions!" 
print obj[1] + " is a benefit of functions!" 
print obj[2] + " is a benefit of functions!" 
4

चर नाम केवल स्थानीय रूप से सार्थक हैं।

एक बार जब आप

return s1,s2,s3,s4

विधि के अंत में

मारा, अजगर सूचकांक 0, 1, 2 में एस 1, S2, S3 और उसके चार सदस्यों के रूप में एस 4 के मूल्यों के साथ एक टपल निर्माण करती है और 3 - वैरिएबल नामों का एक शब्द नहीं, वैरिएबल नामों और उनके मूल्यों आदि के साथ कोई ऑब्जेक्ट नहीं,

यदि आप विधि में return हिट करने के बाद वेरिएबल नाम सार्थक होना चाहते हैं, तो आपको एक ऑब्जेक्ट बनाना होगा या शब्दकोश।

1
class list_benefits(object): 
    def __init__(self): 
     self.s1 = "More organized code" 
     self.s2 = "More readable code" 
     self.s3 = "Easier code reuse" 

def build_sentence(): 
     obj=list_benefits() 
     print obj.s1 + " is a benefit of functions!" 
     print obj.s2 + " is a benefit of functions!" 
     print obj.s3 + " is a benefit of functions!" 

print build_sentence() 

मैं जानता हूँ कि यह देर से जवाब है, शायद कुछ अन्य लोक फायदा हो सकता है आप अभी भी "गुण" द्वारा कॉल करने के लिए चाहते हैं, तो है, आप डिफ़ॉल्ट निर्माता के साथ वर्ग इस्तेमाल कर सकते हैं, और वर्ग का एक उदाहरण बनाने जैसा कि अन्य उत्तरों में उल्लिखित है

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

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