पायथन में, अंतर्निहित फ़ंक्शन प्रकार () और isinstance () का उपयोग किसी वस्तु के प्रकार को प्राप्त करने और जांचने के लिए किया जाता है, जैसे कि एक चर, और यह निर्धारित करने के लिए कि क्या यह एक विशेष प्रकार का है।
- class type(object) — Built-in Functions — Python 3.10.4 Documentation
- isinstance(object, classinfo) — Built-in Functions — Python 3.10.4 Documentation
निम्नलिखित सामग्री को यहां नमूना कोड के साथ समझाया गया है।
- ऑब्जेक्ट प्रकार प्राप्त करें और जांचें:
type()
- वस्तु प्रकार का निर्धारण:
type()
,isinstance()
- प्रकार का उपयोग करके निर्धारण टाइप करें ()
- isinstance () का उपयोग करके निर्धारण टाइप करें
- प्रकार () और isinstance () के बीच अंतर
किसी ऑब्जेक्ट के प्रकार को निर्धारित करने के बजाय, यह निर्धारित करने के लिए कि किसी ऑब्जेक्ट में सही तरीके और विशेषताएँ हैं या नहीं, कोई अपवाद हैंडलिंग या अंतर्निहित फ़ंक्शन hasattr() का उपयोग कर सकता है।
ऑब्जेक्ट प्रकार प्राप्त करें और जांचें:प्रकार()
टाइप (ऑब्जेक्ट) एक फ़ंक्शन है जो ऑब्जेक्ट के प्रकार को तर्क के रूप में देता है। इसका उपयोग किसी वस्तु के प्रकार का पता लगाने के लिए किया जा सकता है।
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
टाइप () का रिटर्न वैल्यू एक प्रकार की वस्तु है जैसे कि स्ट्र या इंट।
print(type(type('string')))
# <class 'type'>
print(type(str))
# <class 'type'>
वस्तु प्रकार का निर्धारण:type(),isinstance()
प्रकार निर्धारित करने के लिए प्रकार() या isinstance() का उपयोग करें।
प्रकार का उपयोग करके निर्धारण टाइप करें ()
टाइप () के रिटर्न वैल्यू की मनमानी प्रकार से तुलना करके, यह निर्धारित किया जा सकता है कि ऑब्जेक्ट किसी भी प्रकार का है या नहीं।
print(type('string') is str)
# True
print(type('string') is int)
# False
def is_str(v):
return type(v) is str
print(is_str('string'))
# True
print(is_str(100))
# False
print(is_str([0, 1, 2]))
# False
यदि आप यह निर्धारित करना चाहते हैं कि यह कई प्रकारों में से एक है, तो इन ऑपरेटर और कई प्रकार की टपल या सूची का उपयोग करें।
def is_str_or_int(v):
return type(v) in (str, int)
print(is_str_or_int('string'))
# True
print(is_str_or_int(100))
# True
print(is_str_or_int([0, 1, 2]))
# False
तर्क प्रकार के आधार पर प्रसंस्करण को बदलने वाले कार्यों को परिभाषित करना भी संभव है।
def type_condition(v):
if type(v) is str:
print('type is str')
elif type(v) is int:
print('type is int')
else:
print('type is not str or int')
type_condition('string')
# type is str
type_condition(100)
# type is int
type_condition([0, 1, 2])
# type is not str or int
isinstance () का उपयोग करके निर्धारण टाइप करें
isinstance (ऑब्जेक्ट, क्लास) एक ऐसा फ़ंक्शन है जो सत्य लौटाता है यदि पहले तर्क की वस्तु दूसरे तर्क के प्रकार या उपवर्ग का उदाहरण है।
दूसरा तर्क एक प्रकार का टपल हो सकता है। यदि यह किसी भी प्रकार का उदाहरण है, तो सत्य वापस आ जाता है।
print(isinstance('string', str))
# True
print(isinstance(100, str))
# False
print(isinstance(100, (int, str)))
# True
प्रकार () का उपयोग करके प्रकार निर्धारण के उदाहरण के समान एक फ़ंक्शन को निम्नानुसार लिखा जा सकता है
def is_str(v):
return isinstance(v, str)
print(is_str('string'))
# True
print(is_str(100))
# False
print(is_str([0, 1, 2]))
# False
def is_str_or_int(v):
return isinstance(v, (int, str))
print(is_str_or_int('string'))
# True
print(is_str_or_int(100))
# True
print(is_str_or_int([0, 1, 2]))
# False
def type_condition(v):
if isinstance(v, str):
print('type is str')
elif isinstance(v, int):
print('type is int')
else:
print('type is not str or int')
type_condition('string')
# type is str
type_condition(100)
# type is int
type_condition([0, 1, 2])
# type is not str or int
प्रकार () और isinstance () के बीच अंतर
प्रकार () और isinstance () के बीच का अंतर यह है कि isinstance () उपवर्गों के उदाहरणों के लिए सही है जो दूसरे तर्क के रूप में निर्दिष्ट वर्ग को विरासत में मिला है।
उदाहरण के लिए, निम्नलिखित सुपरक्लास (बेस क्लास) और सबक्लास (व्युत्पन्न क्लास) को परिभाषित किया गया है
class Base:
pass
class Derive(Base):
pass
base = Base()
print(type(base))
# <class '__main__.Base'>
derive = Derive()
print(type(derive))
# <class '__main__.Derive'>
टाइप () का उपयोग करके टाइप निर्धारण केवल तभी सही होता है जब प्रकार मेल खाते हैं, लेकिन isinstance () सुपरक्लास के लिए भी सही होता है।
print(type(derive) is Derive)
# True
print(type(derive) is Base)
# False
print(isinstance(derive, Derive))
# True
print(isinstance(derive, Base))
# True
यहां तक कि मानक प्रकारों के लिए, उदाहरण के लिए, बूलियन प्रकार बूल (सत्य, गलत), देखभाल की जानी चाहिए। बूल पूर्णांक प्रकार का एक उपवर्ग है, इसलिए isinstance () एक int के लिए भी सही है, जिससे यह विरासत में मिला है।
print(type(True))
# <class 'bool'>
print(type(True) is bool)
# True
print(type(True) is int)
# False
print(isinstance(True, bool))
# True
print(isinstance(True, int))
# True
यदि आप सटीक प्रकार निर्धारित करना चाहते हैं, तो प्रकार () का उपयोग करें; यदि आप खाते में ली गई विरासत के प्रकार को निर्धारित करना चाहते हैं, तो isinstance() का उपयोग करें।
अंतर्निहित फ़ंक्शन issubclass() यह निर्धारित करने के लिए भी प्रदान किया जाता है कि कोई वर्ग किसी अन्य वर्ग का उपवर्ग है या नहीं।
print(issubclass(bool, int))
# True
print(issubclass(bool, float))
# False