logo

AttributeError v Pythonu

Kaj je napaka?

V programskih jezikih velja, da če neko kodo izvedemo na neveljaven način, se izvajanje programa prekine s sporočilom in to sporočilo imenujemo napaka ali izjema. Obstajajo določene vrste napak v programskem jeziku zaradi različnih razlogov. Nekateri od njih so naslednji:

AssertionError:

Ta vrsta napake se pojavi, ko pogoji trditve ali izjave ne uspejo v kodi.

ImportError:

Ta napaka se pojavi, ko uvozimo kakšen modul v datoteko in če ta modul ne obstaja.

IndexError:

odstranite prvi znak v excelu

Do tega pride, ko je indeks katerega koli zaporedja izven obsega.

KeyError:

Ta napaka se sproži v Pythonu, ko v slovarju ne najdemo nobenega ključa.

NameError:

Do te napake lahko pride, če ne najdemo nobene spremenljivke v lokalnem ali globalnem obsegu.

RuntimeError:

Ta napaka se prikaže, ko napake ni mogoče kategorizirati v nobeno vrsto.

IndentationError:

Ko uporabimo napačen zamik v kodi Python, se pojavi IndentationError.

Sistemska napaka:

Ko pride do notranje napake, bo tolmač sprožil SystemError.

UnicodeError:

Ko pride do napake pri kodiranju ali dekodiranju, povezane z Unicode in UnicodeError, se pojavita.

ValueError:

Ko v funkciji posredujemo pravilen argument glede na vrsto podatkov, vendar vrednost ni pravilna, se napaka, ki se je zgodila, imenuje ValueError.

ZeroDivisionError:

Kot vemo, v matematiki ne moremo nobenega števila deliti z nič, ker rezultat teži v neskončnost. Torej, če smo napisali kakršno koli izjavo o deljenju z ničlo ali modulo z ničlo, bo prikazana napaka ZeroDivisionError.

EOFEror:

Ko uporabimo funkcijo input() za pridobivanje vnosa iz datoteke in dosežemo konec datoteke, se pojavi ta napaka, ki označuje, da smo dosegli konec datoteke in zdaj ne moremo sprejeti nobenega vnos iz datoteke.

Ta članek je v glavnem posvečen AttributeError.

Kaj je AttributeError?

Ta napaka se pojavi v programu, ko pride do napake pri določanju atributa. Na primer, če celoštevilski spremenljivki dodelimo neko vrednost in če poskušamo uporabiti katero koli nizovno funkcijo iz te spremenljivke, bo sprožila AttributeError.

Razlog za AttributeError v Pythonu lahko razumemo z naslednjimi primeri:

Primer 1:

Ko uporabimo funkcijo za drug tip podatkov, kar ni mogoče

 a=15 a.append('javatpoint') 

Izhod:

AttributeError v Pythonu

Pojasnilo:

V zgornji kodi imamo eno celoštevilsko spremenljivko in inicializirali smo jo z vrednostjo 15. Zdaj, če uporabimo funkcijo append za spremenljivko a, bo dala AttributeError, ki pravi, da ni atributa kot append v podatkovnem tipu integer.

Primer2:

Pri napačnem črkovanju atributa obstaja možnost AttributeError.

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

Izhod:

AttributeError v Pythonu

Pojasnilo:

V zgornji kodi imamo atribut niza in uporabimo atribut fst, tako da bo AttributeError, da ta atribut ne obstaja za spremenljivko.

Primer3:

Napako AttributeError lahko dobimo, če poskušamo ustvariti napačno referenco za katero koli spremenljivko razreda.

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

Izhod:

AttributeError v Pythonu

Pojasnilo:

V zgornji kodi imamo razred in tam je spremenljivka z imenom var1. Ustvarimo objekt razreda in se pomotoma sklicujemo na napačno spremenljivko var2 tega razreda, ki sploh ne obstaja, tako da bo zagotovo prišlo do AttributeError.

Rešitev za odpravo napake ali izjeme:

V Pythonu ali katerem koli programskem jeziku lahko uporabimo obravnavanje izjem ali napak z uporabo stavkov poskusi in razen.

Primer 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') 

Izhod:

AttributeError v Pythonu

Pojasnilo:

V zgornji kodi imamo razred in spremenljivko z imenom var1. V stavku try se poskušamo sklicevati na var1 in var2. Lahko bomo dereferencirali var1 in natisnili bomo stavek zanj, vendar bomo prejeli AttributeError za sklicevanje na var2. Torej bo program šel v blok razen in natisnili bomo stavek, ki je napisan samo za stanje napake.