"जब कोई कहता है कि" सब कुछ एक वस्तु है "(जैसे पायथन), तो क्या उसका वास्तव में मतलब है कि" सब कुछ प्रथम श्रेणी का है? "
हाँ।
अजगर में सब कुछ एक उचित वस्तु है। यहां तक कि ऐसी चीजें जो अन्य भाषाओं में "आदिम प्रकार" हैं।
आप पाते हैं कि 2
वास्तव में एक वस्तु की तरह एक काफी समृद्ध और परिष्कृत इंटरफ़ेस है।
>>> dir(2)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']
क्योंकि सब कुछ पायथन में एक प्रथम श्रेणी की वस्तु है, वहाँ अपेक्षाकृत कुछ अस्पष्ट विशेष मामले हैं।
जावा में, उदाहरण के लिए, आदिम प्रकार (इंट, बूल, डबल, चार) हैं जो उचित ऑब्जेक्ट नहीं हैं। इसलिए जावा को इंटेगर, बुलियन, डबल और कैरेक्टर को प्रथम श्रेणी के प्रकारों के रूप में पेश करना है। यह शुरुआती लोगों को सिखाना कठिन हो सकता है - यह स्पष्ट नहीं है कि क्यों एक आदिम प्रकार और एक वर्ग दोनों को एक साथ मौजूद होना चाहिए।
इसका अर्थ यह भी है कि एक वस्तु का वर्ग है - स्वयं - एक वस्तु। यह C ++ से अलग है, जहां कक्षाएं हमेशा रन-टाइम पर एक अलग अस्तित्व नहीं रखती हैं।
प्रकार 2
एक type 'int'
वस्तु है, जिसमें विधियाँ, विशेषताएँ और एक प्रकार है।
>>> type(2)
<class 'int'>
के प्रकार निर्मित एक प्रकार की तरह int
है type 'type'
वस्तु। इसकी विधियाँ और विशेषताएँ भी हैं।
>>> type(type(2))
<class 'type'>