Vairāk
Kādas ir atšķirības starp type() un isinstance()?
Kādas ir atšķirības starp šiem diviem koda fragmentiem?
Izmantojot type()
:
import types
if type(a) is types.DictType:
do_something()
if type(b) in types.StringTypes:
do_something_else()
Izmantojot isinstance()
:
if isinstance(a, dict):
do_something()
if isinstance(b, str) or isinstance(b, unicode):
do_something_else()
1153
3
Lūk, piemērs, kur
isinstance
sasniedz to, kotype
nespēj:šajā gadījumā kravas automašīnas objekts ir Vehicle, bet jūs'iegūsiet šo:
Citiem vārdiem sakot,
isinstance
ir patiess arī apakšklasēm.Skatiet arī:
Pēdējais variants ir vēlams, jo tas pareizi apstrādā apakšklases. Patiesībā jūsu piemēru var uzrakstīt vēl vienkāršāk, jo
isinstance()
'otrais parametrs var būt tuple:vai, izmantojot
basestring
abstrakto klasi:Saskaņā ar python dokumentāciju šeit ir paziņojums:
tipi - iebūvēto tipu nosaukumi](http://docs.python.org/library/types.html).
Tāpēc priekšroka jādod `
isinstance()
, nevistype()
.