de-vraag
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
 Herge
Herge
Question

Aký je kanonický spôsob kontroly typu v jazyku Python?

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?

1160 2008-09-30T11:00:10+00:00 3
Peter Mortensen
Peter Mortensen
Edited question 11 november 2017 в 1:33
Programovanie
python
types
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
Fredrik Johansson
Fredrik Johansson
30 september 2008 в 11:07
2008-09-30T11:07:45+00:00
Viac na
Zdroj
Upraviť
#8524162

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)):
 smci
smci
Edited answer 9 september 2018 в 11:53
1397
0
 Herge
Herge
30 september 2008 в 11:05
2008-09-30T11:05:51+00:00
Viac na
Zdroj
Upraviť
#8524161

isinstance(o, str) vráti True, ak o je str alebo je typu, ktorý dedí od str.

type(o) is str vráti True vtedy a len vtedy, ak o je str. Vráti False, ak o je typ, ktorý dedí od str.

 L3viathan
L3viathan
Edited answer 10 marec 2019 в 4:04
49
0
Alexander Kojevnikov
Alexander Kojevnikov
30 september 2008 в 11:01
2008-09-30T11:01:28+00:00
Viac na
Zdroj
Upraviť
#8524160
isinstance(o, str)

Odkaz na dokumenty

 DarkCygnus
DarkCygnus
Edited answer 14 marec 2018 в 6:37
13
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Zuxriddin Muydinov
Registered pred 12 hodinami
2
Денис Анненский
Registered pred 2 dňami
3
365
Registered pred týždňom
4
True Image
Registered pred týždňom
5
archana agarwal
Registered pred týždňom
BG
DE
EL
ES
FR
ID
IT
JA
KO
LT
NL
PT
RO
RU
SK
SL
TR
ZH
© de-vraag 2022
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora