Aký je najlepší spôsob kontroly, či je daný objekt daného typu? Ako skontrolovať, či objekt dedí od daného typu?
Povedzme, že mám objekt o
. Ako skontrolujem, či je to str
?
Ak chcete zistiť, či o
je inštanciou str
alebo nejakou podtriedou str
, použite isinstance (toto je "kanonický" spôsob):
if isinstance(o, str):
Kontrola, či typ o
je presne str
(vylúčte podtriedy):
if type(o) is str:
Nasledujúci postup tiež funguje a v niektorých prípadoch môže byť užitočný:
if issubclass(type(o), str):
Príslušné informácie nájdete v časti Vstavané funkcie v Referencii knižnice Python.
Ešte jedna poznámka: v tomto prípade, ak'používate Python 2, môžete skutočne použiť:
if isinstance(o, basestring):
pretože to zachytí aj reťazce Unicode (unicode
nie je podtrieda str
; ako str
, tak aj unicode
sú podtriedy basestring
). Všimnite si, že basestring
už neexistuje v Pythone 3, kde je striktné oddelenie reťazcov (str
) a binárnych dát (bytes
).
Alternatívou je isinstance
, ktorý akceptuje tuple tried. Vráti True, ak x je inštanciou niektorej podtriedy niektorej z (str, unicode):
if isinstance(o, (str, unicode)):
isinstance(o, str)