Koks geriausias būdas patikrinti, ar tam tikras objektas yra tam tikro tipo? O kaip patikrinti, ar objektas paveldi iš tam tikro tipo?
Tarkime, turiu objektą o
. Kaip patikrinti, ar jis yra str
?
Norėdami patikrinti, ar o
yra str
arba bet kurio str
poklasio egzempliorius, naudokite isinstance (tai būtų "kanoninis" būdas):
if isinstance(o, str):
Patikrinti, ar o
tipas yra būtent str
(neįtraukti poklasių):
if type(o) is str:
Toliau pateiktas būdas taip pat veikia ir kai kuriais atvejais gali būti naudingas:
if issubclass(type(o), str):
Atitinkamos informacijos ieškokite Built-in Functions "Python" bibliotekos žinyne.
Dar viena pastaba: šiuo atveju, jei naudojate Python 2, iš tikrųjų galite naudoti:
if isinstance(o, basestring):
nes tai taip pat sugaus Unicode eilutes (unicode
nėra str
poklasis; ir str
, ir unicode
yra basestring
poklasiai). Atkreipkite dėmesį, kad basestring
nebeegzistuoja Python 3, kur yra griežtai atskirta eilutės (str
) ir dvejetainiai duomenys (bytes
).
Arba isinstance
priima klasių tuple. Tai grąžins True, jei x yra bet kurios iš (str, unicode) poklasių instancija:
if isinstance(o, (str, unicode)):
isinstance(o, str)
grąžins True
, jei o
yra str
arba yra tipo, paveldimo iš str
.
type(o) is str
grąžins True
tada ir tik tada, kai o
yra str. Jis grąžins False
, jei o
yra tipo, paveldimo iš str
.
isinstance(o, str)