पायथन 2.x में, सभी नए शैली के वर्ग object
से स्पष्ट रूप से या स्पष्ट रूप से प्राप्त होते हैं। तो फिर इसे देखो:पुरानी शैली के वर्ग, नई शैली के वर्ग और मेटाक्लास
>>> class M(type):
... pass
...
>>> class A:
... __metaclass__ = M
...
>>> class B:
... pass
...
>>> a = A()
>>> b = B()
>>> type(A)
<class '__main__.M'>
>>> type(a)
<class '__main__.A'>
इसका मतलब यह है A
एक नई शैली वर्ग है? लेकिन A
object
से वैसे भी वारिस नहीं है, है ना?
>>> type(B)
<class 'classobj'>
>>> type(b)
<type 'instance'>
ठीक है, B
क्लासिक क्लास है, है ना?
>>> isinstance(A, object)
True
>>> isinstance(B, object)
True
क्यों दोनों A
के उदाहरण और object
की B
उदाहरण हैं?
यदि B
object
का एक उदाहरण है, तो type(B)
classobj
नहीं होगा, है ना?
कुछ भी एक वस्तु है! – orlp
आपको इस प्रश्न में '__slots__' चीज़ नहीं डालनी चाहिए थी। यह पूरी तरह से एक और सवाल है। –
@ क्रिस मॉर्गन, हाँ, मुझे बस एहसास हुआ। – Alcott