Ing Python, dibangun ing jinis fungsi () lan isinstance () digunakake kanggo njaluk lan mriksa jinis obyek, kayata variabel, lan kanggo nemtokake apa iku saka jinis tartamtu.
- class type(object) — Built-in Functions — Python 3.10.4 Documentation
- isinstance(object, classinfo) — Built-in Functions — Python 3.10.4 Documentation
Isi ing ngisor iki diterangake ing kene, bebarengan karo kode conto.
- Entuk lan mriksa jinis obyek:
type()
- Penentuan jinis obyek:
type()
,isinstance()
- Penentuan jinis nggunakake jinis ()
- Penentuan jinis nggunakake isinstance()
- Bedane antarane jinis() lan isinstance()
Tinimbang nemtokake jinis obyek, siji bisa nggunakake pangecualian penanganan utawa dibangun ing fungsi hasattr () kanggo nemtokake apa obyek wis cara bener lan atribut.
Entuk lan mriksa jinis obyek:jinis()
type(obyek) minangka fungsi sing ngasilake jinis obyek sing diterusake minangka argumen. Iki bisa digunakake kanggo ngerteni jinis obyek.
print(type('string'))
# <class 'str'>
print(type(100))
# <class 'int'>
print(type([0, 1, 2]))
# <class 'list'>
Nilai bali saka jinis () minangka obyek jinis kayata str utawa int.
print(type(type('string')))
# <class 'type'>
print(type(str))
# <class 'type'>
Penentuan jinis obyek:type(),isinstance()
Gunakake jinis () utawa isinstance () kanggo nemtokake jinis.
Penentuan jinis nggunakake jinis ()
Kanthi mbandingaken Nilai bali saka jinis () karo jinis kasepakatan, bisa ditemtokake yen obyek saka sembarang tipe.
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
Yen sampeyan pengin nemtokake manawa iku salah siji saka sawetara jinis, gunakake operator in lan tuple utawa dhaptar sawetara jinis.
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
Sampeyan uga bisa nemtokake fungsi sing ngganti pangolahan gumantung saka jinis argumen.
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
Penentuan jinis nggunakake isinstance()
isinstance(obyek, kelas) minangka fungsi sing ngasilake bener yen obyek saka argumen pisanan minangka conto saka jinis utawa subclass saka argumen kapindho.
Argumentasi kapindho bisa dadi tuple jinis. Yen conto saka salah siji jinis, bener bali.
print(isinstance('string', str))
# True
print(isinstance(100, str))
# False
print(isinstance(100, (int, str)))
# True
Fungsi sing padha karo conto nemtokake jinis nggunakake jinis () bisa ditulis kaya ing ngisor iki
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
Bedane antarane jinis() lan isinstance()
Bentenipun antarane jinis () lan isinstance () iku isinstance () bali bener kanggo kedadean saka subclasses sing marisi kelas kasebut minangka argumen kapindho.
Contone, superclass ing ngisor iki (kelas dasar) lan subclass (kelas asale) ditetepake
class Base:
pass
class Derive(Base):
pass
base = Base()
print(type(base))
# <class '__main__.Base'>
derive = Derive()
print(type(derive))
# <class '__main__.Derive'>
Tipe netepake nggunakake jinis () ngasilake bener mung nalika jinis cocog, nanging isinstance () bali bener malah kanggo superclasses.
print(type(derive) is Derive)
# True
print(type(derive) is Base)
# False
print(isinstance(derive, Derive))
# True
print(isinstance(derive, Base))
# True
Malah kanggo jinis standar, contone, bool jinis boolean (bener, salah), kudu ati-ati. bool minangka subclass saka jinis integer, dadi isinstance () ngasilake bener sanajan kanggo int sing diwarisake.
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
Yen sampeyan pengin nemtokake jinis pas, nggunakake jinis (); yen sampeyan pengin nemtokake jinis karo warisan dijupuk menyang akun, nggunakake isinstance ().
Fungsi dibangun ing issubclass () uga kasedhiya kanggo nemtokake apa kelas iku subclass saka kelas liyane.
print(issubclass(bool, int))
# True
print(issubclass(bool, float))
# False