Python တွင်၊ variable ကဲ့သို့သော အရာဝတ္ထုတစ်ခု၏ အမျိုးအစားကို ရယူပြီး စစ်ဆေးရန်နှင့် ၎င်းသည် သီးခြားအမျိုးအစား ဟုတ်မဟုတ် ဆုံးဖြတ်ရန်အတွက် 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() ကိုအသုံးပြု၍ အမျိုးအစားသတ်မှတ်ခြင်း
- type() နှင့် isinstance() ကွာခြားချက်
အရာဝတ္တုတစ်ခု၏ အမျိုးအစားကို သတ်မှတ်မည့်အစား၊ အရာဝတ္ထုတစ်ခုတွင် မှန်ကန်သော နည်းလမ်းများနှင့် အရည်အချင်းများ ရှိမရှိ ဆုံးဖြတ်ရန် ခြွင်းချက် ကိုင်တွယ်ခြင်း သို့မဟုတ် built-in function hasattr() ကို အသုံးပြုနိုင်သည်။
အရာဝတ္ထုအမျိုးအစားကို ရယူပြီး စစ်ဆေးပါ။:အမျိုးအစား()
type(object) သည် argument အဖြစ် ဖြတ်သွားသော object အမျိုးအစားကို ပြန်ပေးသည့် function တစ်ခုဖြစ်သည်။ အရာဝတ္ထု အမျိုးအစားကို ရှာဖွေရန် ၎င်းကို အသုံးပြုနိုင်သည်။
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
type() ၏ return value သည် str သို့မဟုတ် int ကဲ့သို့သော type object တစ်ခုဖြစ်သည်။
print(type(type('string')))
# <class 'type'>
print(type(str))
# <class 'type'>
အရာဝတ္ထုအမျိုးအစားကို သတ်မှတ်ခြင်း။:type(),isinstance()
အမျိုးအစားကိုဆုံးဖြတ်ရန် type() သို့မဟုတ် isinstance() ကိုအသုံးပြုပါ။
အမျိုးအစား() ကိုအသုံးပြု၍ အမျိုးအစားသတ်မှတ်ခြင်း
type() ၏ return value ကို arbitrary type နှင့် နှိုင်းယှဉ်ခြင်းဖြင့်၊ object သည် မည်သည့် type ဖြစ်မဖြစ် ဆုံးဖြတ်နိုင်ပါသည်။
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
၎င်းသည် အမျိုးအစားများစွာထဲမှ တစ်ခုဟုတ်မဟုတ် ဆုံးဖြတ်လိုပါက၊ အော်ပရေတာနှင့် 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
argument အမျိုးအစားပေါ် မူတည်ပြီး processing ကို ပြောင်းလဲတဲ့ function တွေကို သတ်မှတ်ဖို့လည်း ဖြစ်နိုင်တယ်။
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) သည် ပထမ argument ၏ object သည် second argument ၏ အမျိုးအစား သို့မဟုတ် subclass ၏ instance တစ်ခုဖြစ်ပါက true ပြန်ပေးသည့် function တစ်ခုဖြစ်သည်။
ဒုတိယအငြင်းအခုံသည် tuple အမျိုးအစားများဖြစ်နိုင်သည်။ အမျိုးအစား တစ်ခုခု၏ ဥပမာတစ်ခုဆိုလျှင် true ကို ပြန်ပေးသည်။
print(isinstance('string', str))
# True
print(isinstance(100, str))
# False
print(isinstance(100, (int, str)))
# True
type() ကိုအသုံးပြု၍ type determination ၏ဥပမာနှင့်ဆင်တူသော function ကိုအောက်ပါအတိုင်းရေးသားနိုင်သည်။
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
type() နှင့် isinstance() ကွာခြားချက်
type() နှင့် isinstance() အကြားခြားနားချက်မှာ isinstance() သည် ဒုတိယအငြင်းအခုံအဖြစ်သတ်မှတ်ထားသော class ကိုအမွေဆက်ခံသော subclass များ၏ instance များအတွက် true ပြန်ပေးသည်။
ဥပမာအားဖြင့်၊ အောက်ဖော်ပြပါ superclass (base class) နှင့် subclass (derived class) တို့ကို သတ်မှတ်သည်။
class Base:
pass
class Derive(Base):
pass
base = Base()
print(type(base))
# <class '__main__.Base'>
derive = Derive()
print(type(derive))
# <class '__main__.Derive'>
type() ကို အသုံးပြု၍ အမျိုးအစားများ တူညီသောအခါတွင် အမျိုးအစားသတ်မှတ်ခြင်း သည် true ပြန်ပေးသည်၊ သို့သော် 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 တစ်ခုအတွက်ပင် true ပြန်ပေးသည်။
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
အမျိုးအစားအတိအကျကို ဆုံးဖြတ်လိုပါက type(); အမွေဆက်ခံမှု အမျိုးအစားကို ထည့်သွင်းတွက်ချက်လိုပါက isinstance() ကို အသုံးပြုပါ။
class တစ်ခုသည် အခြား class တစ်ခု၏ subclass ဟုတ်မဟုတ် ဆုံးဖြတ်ရန် built-in function issubclass() ကို ပေးထားသည်။
print(issubclass(bool, int))
# True
print(issubclass(bool, float))
# False