Python හි, විචල්යයක් වැනි වස්තුවක වර්ගය ලබා ගැනීමට සහ පරීක්ෂා කිරීමට සහ එය විශේෂිත වර්ගයකට අයත් දැයි තීරණය කිරීමට බිල්ට්-ඉන් ශ්රිත වර්ගය() සහ 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'>
වර්ගය() හි ප්රතිලාභ අගය 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 operator සහ tuple හෝ වර්ග කිහිපයක ලැයිස්තුවක් භාවිතා කරන්න.
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) යනු පළමු තර්කයේ වස්තුව දෙවන තර්කයේ වර්ගය හෝ උපපංතියේ අවස්ථාවක් නම් සත්ය ලෙස ලබා දෙන ශ්රිතයකි.
දෙවන තර්කය වර්ග කිහිපයක් විය හැකිය. එය ඕනෑම වර්ගයක අවස්ථාවක් නම්, සත්ය ආපසු එවනු ලැබේ.
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'>
Type() භාවිතයෙන් වර්ගය නිර්ණය කිරීම සත්ය ලෙස ලබා දෙන්නේ වර්ග ගැළපෙන විට පමණි, නමුත් isinstance() superclasses සඳහා පවා සත්ය වේ.
print(type(derive) is Derive)
# True
print(type(derive) is Base)
# False
print(isinstance(derive, Derive))
# True
print(isinstance(derive, Base))
# True
සම්මත වර්ග සඳහා වුවද, උදාහරණයක් ලෙස, boolean වර්ගයේ bool (සත්ය, අසත්ය), සැලකිලිමත් විය යුතුය. bool යනු පූර්ණ සංඛ්යා ආකාරයේ උප පංතියකි, එබැවින් 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