का उपयोग कर पाइथन ऑब्जेक्ट्स पाइथन के डेटा मॉडल के बारे में सीखने में, मैं __new__
विधि का उपयोग कर मौजूदा ऑब्जेक्ट्स से ऑब्जेक्ट्स बनाने के साथ खेल रहा हूं। यहाँ कुछ उदाहरण हैं जो विभिन्न प्रकार के नए वस्तुओं को बनाने हैं:पायथन ऑब्जेक्ट्स __new__
x = 2; print type(x).__new__(x.__class__)
x = {}; print type(x).__new__(x.__class__)
x = [1,2]; print type(x).__new__(x.__class__)
x = 2.34; print type(x).__new__(x.__class__)
x = '13'; print type(x).__new__(x.__class__)
x = 1.0j; print type(x).__new__(x.__class__)
x = True; print type(x).__new__(x.__class__)
x = (1,2); print type(x).__new__(x.__class__)
हालांकि, निम्नलिखित तीन प्रयोगों मुझे त्रुटियों दे:
x = None; print type(x).__new__(x.__class__)
x = lambda z: z**2; print type(x).__new__(x.__class__)
x = object; print type(x).__new__(x.__class__)
त्रुटियों (क्रमशः) कर रहे हैं:
TypeError: object.__new__(NoneType) is not safe, use NoneType.__new__()
TypeError: Required argument 'code' (pos 1) not found
TypeError: type() takes 1 or 3 arguments
इन तीन उदाहरण क्यों काम नहीं करते? (नोट: lambda
उदाहरण के लिए ऐसा लगता है कि जब मैं __new__
विधि का आह्वान करता हूं तो मुझे कोड खंड में पास करना होगा, लेकिन मुझे नहीं पता कि यह कैसे करना है।) मैं पायथन 2.6 का उपयोग कर रहा हूं।
कृपया ध्यान दें कि मुझे एहसास है कि यह आवश्यक नहीं है कि आप वास्तविक कोड में नई वस्तुएं बनाना चाहते हैं, लेकिन मेरा उद्देश्य व्यावहारिक नहीं है, बल्कि यह समझना है कि निम्न-स्तरीय ऑब्जेक्ट विधियां कैसे काम करती हैं।
और वास्तव में क्या त्रुटि कहते हैं कि यह हमारे लिए benefitial हो जाएगा .. –
जोड़ा संदेशों , रोहित। सलाह के लिये धन्यवाद। – rlandster