பைத்தானில், உள்ளமைக்கப்பட்ட செயல்பாடுகள் வகை() மற்றும் 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()
- வகை()ஐப் பயன்படுத்தி வகை நிர்ணயம்
- ஐசின்ஸ்டன்ஸைப் பயன்படுத்தி வகை நிர்ணயம்()
- வகை() மற்றும் நிகழ்வு() இடையே உள்ள வேறுபாடு
ஒரு பொருளின் வகையைத் தீர்மானிப்பதற்குப் பதிலாக, ஒரு பொருளுக்கு சரியான முறைகள் மற்றும் பண்புக்கூறுகள் உள்ளதா என்பதைத் தீர்மானிக்க, விதிவிலக்கு கையாளுதல் அல்லது உள்ளமைக்கப்பட்ட செயல்பாடு hasattr() ஐப் பயன்படுத்தலாம்.
பொருள் வகையைப் பெற்று சரிபார்க்கவும்:வகை()
type(object) என்பது வாதமாக அனுப்பப்பட்ட பொருளின் வகையை வழங்கும் ஒரு செயல்பாடாகும். ஒரு பொருளின் வகையைக் கண்டறிய இதைப் பயன்படுத்தலாம்.
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
வகை() இன் திரும்ப மதிப்பு என்பது 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
இது பல வகைகளில் ஒன்றா என்பதை நீங்கள் தீர்மானிக்க விரும்பினால், இன் ஆபரேட்டர் மற்றும் பல வகைகளின் ட்யூப்பிள் அல்லது பட்டியலைப் பயன்படுத்தவும்.
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(object, class) என்பது, முதல் வாதத்தின் பொருள், இரண்டாவது வாதத்தின் வகை அல்லது துணைப்பிரிவின் நிகழ்வாக இருந்தால், 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() ஆகியவற்றுக்கு இடையேயான வேறுபாடு என்னவென்றால், இரண்டாவது வாதமாக குறிப்பிடப்பட்ட வகுப்பை மரபுரிமையாகப் பெறும் துணைப்பிரிவுகளின் நிகழ்வுகளுக்கு 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
எடுத்துக்காட்டாக, நிலையான வகைகளுக்கு கூட, பூலியன் வகை பூல் (உண்மை, பொய்) கவனமாக இருக்க வேண்டும். bool என்பது முழு எண் வகையின் துணைப்பிரிவாகும், எனவே isinstance() என்பது அது மரபுரிமையாகப் பெறப்பட்ட ஒரு எண்ணுக்கு உண்மையாக இருக்கும்.
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