2012-08-16 14 views
15
class Num: 
    def __init__(self,num): 
     self.n = num 

मैंने पढ़ा है कि __init__ विधि रिटर्न करता है None .जब मैं a=Num(5) करते हैं, Num(5) class.But की __init__ विधि कॉल होगा अगर __init__ रिटर्न None तो a कुछ नहीं.लेकिन का उल्लेख होना चाहिए बजाय aNum कक्षा की वस्तु का संदर्भ दे रहा है। यह कैसे होता है? तो __init__None या कक्षा का उद्देश्य लौटाता है?क्या अजगर में __init__ विधि वापसी

उत्तर

34

__init__()None देता है। यह __new__() है जो नया उदाहरण देता है।

+6

+1 (सही) ऐसा लगता है कि यह आपके भ्रम की तरह सोच रहा है कि '__init __()' एक वस्तु को तत्काल करने के दौरान बुलाया जाने वाला एकमात्र तरीका था; 'ए = संख्या (5)' 'ए = संख्या .__ init __ (5)' के समान नहीं है (ध्यान दें कि दूसरा काम नहीं करता है)। __init __() के लिए –

+1

+1 एकमात्र विधि नहीं है। थेंक्स @ मैट्ट्यूएडम्स – tez

1

एक = न्यू (5) करते समय, आप ऑब्जेक्ट बनाते हैं और नव निर्मित ऑब्जेक्ट वापस आ जाता है। लेकिन ऑब्जेक्ट बनाते समय आप __init__ पर सीधे कॉल करना आसान नहीं है। __init__ पृष्ठभूमि में कुछ पायथन जादू द्वारा दीक्षा प्रक्रिया का हिस्सा कहा जाता है। और मूल रूप से __new__ उस जादू का हिस्सा है। हालांकि, केवल दुर्लभ मामले हैं, जहां आप __new__ के साथ बेकार करना चाहते हैं। आपको केवल इतना करना चाहिए, अगर आप वास्तव में जानते हैं कि आप क्या कर रहे हैं और यदि आपके लक्ष्य तक पहुंचने के लिए वास्तव में कोई आसान तरीका नहीं है।

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