क्यों निम्नलिखित कोड काम ठीक पायथन 2.x में और नहीं पायथन में 3.3+ करता है:तर्क के साथ ऑब्जेक्ट .__ new__ क्यों Python 2.x में ठीक है और पायथन 3.3+ में नहीं है?
class TestA(object):
def __new__(cls, e):
return super(TestA, cls).__new__(TestB, e)
class TestB(TestA):
def __init__(self, e):
print(self, e)
TestA(1)
अजगर 2.7.6 उत्पादन:
(<__main__.TestB object at 0x7f6303378ad0>, 1)
अजगर 3.1.5 उत्पादन:
__main__:3: DeprecationWarning: object.__new__() takes no parameters
<__main__.TestB object at 0x7f2f69db8f10> 1
अजगर 3.2.3 और 3.2.5 उत्पादन:
<__main__.TestB object at 0xcda690> 1
अजगर 3.3.5 और 3.4.1 उत्पादन:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __new__
TypeError: object() takes no parameters
संबंधित: [ऑब्जेक्ट क्यों करता है। \ _ \ _ नया \ _ \ _ इन तीन मामलों में अलग-अलग काम करता है] (http://stackoverflow.com/q/19277399) –
यह व्याख्याकर्ता आउटपुट, पहला प्रिंट, दूसरा ऑब्जेक्ट है। यदि कार्यक्रम के रूप में चलाया जाता है तो एक पंक्ति होगी। फिक्स्ड। – tbicr
क्या आप निश्चित हैं? यह कोड पायथन 2.7.4 और पायथन 3.2.3 पर काम करता है। –