पाइथनमा, बिल्ट-इन प्रकार्य प्रकार() र 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() प्रयोग गर्न सक्छ कि वस्तुमा सही विधिहरू र विशेषताहरू छन् कि छैनन् भनेर निर्धारण गर्न।
प्राप्त गर्नुहोस् र वस्तु प्रकार जाँच गर्नुहोस्:प्रकार()
type(object) एउटा प्रकार्य हो जसले तर्कको रूपमा पास गरिएको वस्तुको प्रकार फर्काउँछ। यो वस्तुको प्रकार पत्ता लगाउन प्रयोग गर्न सकिन्छ।
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
type() को रिटर्न मान str वा int जस्ता प्रकारको वस्तु हो।
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
यदि तपाइँ यो धेरै प्रकारहरू मध्ये एक हो कि भनेर निर्धारण गर्न चाहनुहुन्छ भने, in अपरेटर प्रयोग गर्नुहोस् र धेरै प्रकारहरूको टपल वा सूची प्रयोग गर्नुहोस्।
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(object, class) एउटा प्रकार्य हो जसले true फर्काउँछ यदि पहिलो आर्गुमेन्टको वस्तु दोस्रो आर्गुमेन्टको प्रकार वा सबक्लासको उदाहरण हो।
दोस्रो तर्क धेरै प्रकारको हुन सक्छ। यदि यो कुनै पनि प्रकारको उदाहरण हो भने, true फर्काइन्छ।
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() बीचको भिन्नता
type() र 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'>
type() को प्रयोग गरेर प्रकार निर्धारणले प्रकारहरू मिल्दा मात्र सही फर्काउँछ, तर isinstance() सुपरक्लासहरूको लागि पनि सही फर्काउँछ।
print(type(derive) is Derive)
# True
print(type(derive) is Base)
# False
print(isinstance(derive, Derive))
# True
print(isinstance(derive, Base))
# True
मानक प्रकारका लागि पनि, उदाहरणका लागि, बुलियन प्रकार bool (सत्य, गलत), हेरचाह गर्नुपर्छ। bool integer प्रकारको सबक्लास हो, त्यसैले 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