logo

AttributeError v Pythonu

Co je to chyba?

Pokud v programovacích jazycích provedeme nějaký kód neplatným způsobem, provádění programu se zastaví se zprávou a tato zpráva se nazývá chyba nebo výjimka. V programovacím jazyce existují určité typy chyb z různých důvodů. Některé z nich jsou následující:

AssertionError:

K tomuto typu chyby dochází, když podmínky tvrzení nebo příkazy v kódu selžou.

pořadí náhodně v sql

ImportError:

K této chybě dochází, když importujeme nějaký modul do souboru a tento modul neexistuje.

IndexError:

Vyskytuje se, když je u jakékoli sekvence její index mimo rozsah.

KeyError:

Tato chyba je vyvolána v Pythonu, když nemůžeme najít žádný klíč ve slovníku.

NameError:

K této chybě může dojít, když nenajdeme žádnou proměnnou v lokálním nebo globálním rozsahu.

RuntimeError:

Tato chyba bude vyvolána, pokud chybu nelze kategorizovat do žádného typu.

IndentationError:

Když v kódu Pythonu použijeme špatné odsazení, dojde k IndentationError.

Chyba systému:

Pokud dojde k vnitřní chybě, překladač vyvolá SystemError.

UnicodeError:

Pokud dojde k chybě kódování nebo dekódování související s Unicode, zobrazí se chyba UnicodeError.

ValueError:

Když jsme ve funkci, předáme správný argument podle datového typu, ale hodnota není správná, pak se chyba, ke které došlo, nazývá ValueError.

ZeroDivisionError:

Jak víme, v matematice nemůžeme dělit žádné číslo nulou, protože výsledek má tendenci k nekonečnu. Pokud jsme tedy napsali nějaké prohlášení týkající se dělení nulou nebo modulo nulou, pak bude vyvolaná chyba ZeroDivisionError.

EOFE chyba:

Když použijeme funkci input() k získání vstupu ze souboru a dostaneme se na konec souboru, pak se tato chyba zobrazí, aby indikovala, že jsme dosáhli konce souboru, a nyní nemůžeme vzít žádný vstup ze souboru.

Tento článek je věnován hlavně AttributeError.

Co je AttributeError?

K této chybě dochází v programu, když dojde k selhání kondicionování v přiřazení atributu. Pokud například přiřadíme celočíselné proměnné nějakou hodnotu a pokusíme-li se použít jakoukoli řetězcovou funkci z této proměnné, vyvolá to AttributeError.

Důvod AttributeError v Pythonu můžeme pochopit na následujících příkladech:

char + int v jazyce Java

Příklad 1:

Když aplikujeme funkci na jiný datový typ, což není možné

 a=15 a.append('javatpoint') 

Výstup:

AttributeError v Pythonu

Vysvětlení:

Ve výše uvedeném kódu máme jednu celočíselnou proměnnou a inicializovali jsme ji hodnotou 15. Nyní, pokud použijeme funkci append na proměnnou a, poskytne AttributeError, která říká, že neexistuje žádný atribut jako append v datovém typu integer.

Příklad2:

Při nesprávném pravopisu atributu existuje možnost AttributeError.

 string = 'you will learn each coding tutorial from '.fst('Javatpoint') print(string) 

Výstup:

AttributeError v Pythonu

Vysvětlení:

Ve výše uvedeném kódu máme atribut string a aplikujeme atribut fst, takže bude AttributeError, že tento atribut pro proměnnou neexistuje.

Příklad 3:

AttributeError můžeme získat, pokud se pokusíme vytvořit špatný odkaz na jakoukoli proměnnou třídy.

 class Javatpoint(): def __init__(self): self.var1 = 'This is for JavatPoint' obj = Javatpoint() print(obj.var1) print(obj.var2) 

Výstup:

středové tlačítko css
AttributeError v Pythonu

Vysvětlení:

Ve výše uvedeném kódu máme třídu a existuje proměnná s názvem var1. Vytvoříme objekt třídy a omylem odkážeme na špatnou proměnnou var2 této třídy, která dokonce neexistuje, takže tam určitě bude AttributeError.

Řešení pro řešení chyby nebo výjimky:

V Pythonu nebo v libovolném programovacím jazyce můžeme použít zpracování výjimek nebo chyb pomocí příkazů try a výjimkou.

Příklad 4:

 class Javatpoint(): def __init__(self): self.var1 = 'This is for javatpoint' obj = Javatpoint() try: print(obj.var1) print(obj.var2) except AttributeError: print('There is no such attribute') 

Výstup:

AttributeError v Pythonu

Vysvětlení:

Ve výše uvedeném kódu máme třídu a proměnnou s názvem var1. V příkazu try se snažíme odkazovat na var1 a var2. Budeme moci dereferencovat var1 a vytiskneme pro něj příkaz, ale pro odkazování na var2 získáme AttributeError. Program tedy přejde do kromě bloku a vytiskneme příkaz, který je zapsán pouze pro chybový stav.