2012-09-16 10 views
24

निम्न कोड चलाते समय मैं एक त्रुटि हो रही है में त्रुटि "यह निर्माता कोई तर्क लेता है"?__init__

+3

जवाब ने बताया कि '__init__' डबल अंडरस्कोर का उपयोग करता है। लेकिन आपको त्रुटि संदेश प्राप्त करने का कारण यह है कि डिफ़ॉल्ट रूप से आपकी कक्षा को 'ऑब्जेक्ट' से विरासत में खाली '__init __ (स्वयं) विधि के साथ आपूर्ति की जाती है। चूंकि आपने उस विधि को ओवरराइड नहीं किया है, यह वह था जिसे बुलाया गया था। –

+0

टाइपोज़ के समान मामले पर (इस मामले में दो के बजाय एक एकल अंडरस्कोर) मैं विधि '__ini__' – Salam

उत्तर

39

विधि __init__ नाम दिया जाना चाहिए एक निर्माता, नहीं _init_ किया जाना है। (डबल अंडरस्कोर नोट करें।)

यदि आप एकल अंडरस्कोर का उपयोग करते हैं, तो आप केवल _init_ नामक एक विधि बनाते हैं, और एक डिफ़ॉल्ट कन्स्ट्रक्टर प्राप्त करते हैं, जिसमें कोई तर्क नहीं होता है।

8

__init__ के लिए डबल अंडरस्कोर का उपयोग करें।

class Person: 
    def __init__(self, name): 

(अजगर के सभी special methods शुरू करते हैं और, डबल एकल नहीं, रेखांकित के साथ समाप्त।)

+1

[यहां] (http://stackoverflow.com/a/3443428/1322401) नामकरण करके एक ही गलती में गिर गया पाइथन का डबल अंडरस्कोर का उपयोग कैसे हुआ। –

-7
class Robots: 
    def __init__(self,subject): #add double underscores,on both sides. 

सुझाव अजगर तरीकों का एक स्पष्ट अंतर्दृष्टि के साथ के लिए में इस documentation देखने

+8

यह उत्तर कोई नई जानकारी नहीं जोड़ता है, और कोड में 2 वाक्यविन्यास त्रुटियां हैं (और बहुत गैर-मानक इंडेंटेशन)। –

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