Di Python de, fonksiyonên çêkirî celeb() û isinstance() têne bikar anîn da ku celebek tiştek, wek guhêrbar, werbigirin û kontrol bikin û diyar bikin ka ew celebek taybetî ye.
- class type(object) — Built-in Functions — Python 3.10.4 Documentation
- isinstance(object, classinfo) — Built-in Functions — Python 3.10.4 Documentation
Naveroka jêrîn, digel koda nimûne, li vir têne rave kirin.
- Tîpa tiştan bistînin û kontrol bikin:
type()
- Diyarkirina cureyê objektê:
type()
,isinstance()
- Diyarkirina tîpê bi karanîna tîpê()
- Diyarkirina tîpê bi karanîna nimûneyê()
- Cûdahiya di navbera celeb () û nimûne ()
Li şûna destnîşankirina celebê tiştekê, meriv dikare karanîna îstîsnayan an fonksiyona çêkirî ya hasattr() bikar bîne da ku diyar bike ka tişt xwediyê rêbaz û taybetmendiyên rast e.
Tîpa tiştan bistînin û kontrol bikin:awa()
tîp(objekt) fonksiyonek e ku celebê tiştê ku wekî arguman hatî derbas kirin vedigerîne. Ev dikare were bikar anîn da ku celebek tiştek bibîne.
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
Nirxa vegerê ya type() celebek celebek wekî str an int e.
print(type(type('string')))
# <class 'type'>
print(type(str))
# <class 'type'>
Diyarkirina cureyê objektê:type(),isinstance()
Ji bo destnîşankirina cureyê tîp() an jî mînak() bikar bînin.
Diyarkirina tîpê bi karanîna tîpê()
Bi danberhevkirina nirxa vegerê ya celeb() bi celebek keyfî re, meriv dikare were destnîşankirin ka tişt ji her celebê ye.
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
Ger hûn dixwazin diyar bikin ka ew yek ji çend celeban e, operatora in û jimareyek an navnîşek çend celeban bikar bînin.
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
Di heman demê de gengaz e ku meriv fonksiyonên ku li gorî celebê argumana pêvajoyê diguhezîne diyar bike.
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
Diyarkirina tîpê bi karanîna nimûneyê()
isinstance(objekt, çîn) fonksiyonek e ku rast vedigere heke mebesta argumana yekem mînakek celeb an binkifla argumana duyemîn be.
Argumana duyemîn dikare gelek celeb be. Ger ew mînakek ji her celebê be, rast tê vegerandin.
print(isinstance('string', str))
# True
print(isinstance(100, str))
# False
print(isinstance(100, (int, str)))
# True
Fonksiyonek mîna mînaka diyarkirina tîpê bi karanîna tîpa() dikare bi vî rengî were nivîsandin
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
Cûdahiya di navbera celeb () û nimûne ()
Cûdahiya di navbera celeb() û isinstance() de ev e ku isinstance() ji bo nimûneyên binklasên ku çîna ku wekî argumana duyemîn hatî destnîşan kirin mîras vedigere.
Mînakî, superclassa jêrîn (class bingehîn) û jêr-class (class jêhatî) têne diyar kirin.
class Base:
pass
class Derive(Base):
pass
base = Base()
print(type(base))
# <class '__main__.Base'>
derive = Derive()
print(type(derive))
# <class '__main__.Derive'>
Diyarkirina tîpê bi karanîna tîpa() tenê rast vedigere dema ku tîp li hev bikin, lê isinstance() jî ji bo superclassan rast vedigere.
print(type(derive) is Derive)
# True
print(type(derive) is Base)
# False
print(isinstance(derive, Derive))
# True
print(isinstance(derive, Base))
# True
Tewra ji bo celebên standard jî, wek nimûne, tîpa boolê (rast, xelet), divê baldar be. bool binklassek ji cureya jimarejimar e, ji ber vê yekê isinstance() rast vedigere heta ji bo int ku jê mîrasî ye.
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
Heke hûn dixwazin celebê rast diyar bikin, type(); Heke hûn dixwazin celebê mîrasê li ber çavan bigirin diyar bikin, isinstance() bikar bînin.
Fonksiyona binavkirî issubclass() jî tê peyda kirin da ku diyar bike ka çînek binklassek çînek din e.
print(issubclass(bool, int))
# True
print(issubclass(bool, float))
# False