Koks yra kanoninis būdas patikrinti tipą "Python" programoje?

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?

Sprendimas

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)):
Komentarai (6)

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.

Komentarai (3)