logo

Python: AttributeError

În fiecare limbaj de programare, dacă dezvoltăm programe noi, există șanse mari de a primi erori sau excepții. Aceste erori fac ca programul să nu fie executat. Una dintre erorile din Python apare cel mai adesea este AttributeError. AttributeError poate fi definită ca o eroare care apare atunci când o referință de atribut sau o atribuire eșuează.
De exemplu, dacă luăm o variabilă x, ni se atribuie o valoare de 10. În acest proces să presupunem că vrem să adăugăm o altă valoare acelei variabile. Nu este posibil. Deoarece variabila este un tip întreg, nu acceptă metoda append. Deci, în acest tip de problemă, obținem o eroare numită AttributeError. Să presupunem că dacă variabila este de tip listă, atunci acceptă metoda append. Atunci nu există nicio problemă și nu se obține o eroare de atribut.

Notă: Erorile de atribut în Python sunt în general ridicate atunci când se face o referință de atribut nevalidă.
Există câteva șanse de a obține AttributeError.
Exemplul 1:

Python3






# Python program to demonstrate> # AttributeError> X>=> 10> # Raises an AttributeError> X.append(>6>)>

>

>

Ieșire:

Traceback (most recent call last): File '/home/46576cfdd7cb1db75480a8653e2115cc.py', line 5, in X.append(6) AttributeError: 'int' object has no attribute 'append'>

Exemplul 2: Uneori, orice variație a ortografiei va cauza o eroare de atribut, deoarece Python este un limbaj sensibil la majuscule și minuscule.

Python3


traversarea copacilor



# Python program to demonstrate> # AttributeError> # Raises an AttributeError as there is no> # method as fst for strings> string>=> 'The famous website is { }'>.fst(>'geeksforgeeks'>)> print>(string)>

>

>

Ieșire:

Traceback (most recent call last): File '/home/2078367df38257e2ec3aead22841c153.py', line 3, in string = 'The famous website is { }'.fst('geeksforgeeks') AttributeError: 'str' object has no attribute 'fst'>

Exemplul 3 : AttributeError poate fi generată și pentru o clasă definită de utilizator atunci când utilizatorul încearcă să facă o referință de atribut nevalidă.

Python3




# Python program to demonstrate> # AttributeError> class> Geeks():> > >def> __init__(>self>):> >self>.a>=> 'techcodeview.com'> > # Driver's code> obj>=> Geeks()> print>(obj.a)> # Raises an AttributeError as there> # is no attribute b> print>(obj.b)>

git status -s

>

>

Ieșire:

techcodeview.com>

Eroare:

Traceback (most recent call last): File '/home/373989a62f52a8b91cb2d3300f411083.py', line 17, in print(obj.b) AttributeError: 'Geeks' object has no attribute 'b'>

Exemplul 4: AttributeError poate fi ridicată și pentru o clasă definită de utilizator atunci când utilizatorul nu mai poate adăuga file sau spații între liniile de cod.

Python3




#This is a dictionary parsing code written by Amit Jadhav> #Because of an Indentation Error you will experience Attribute Error> class> dict_parsing:> > >def> __init__(>self>,a):> >self>.a>=> a> > >def> getkeys(>self>):> >if> self>.notdict():> >return> list>(>self>.a.keys())> > >def> getvalues(>self>):> >if> self>.notdict():> >return> list>(>self>.a.values())> > >def> notdict(>self>):> >if> type>(>self>.a) !>=> dict>:> >raise> Exception(>self>,a,>'not a dictionary'>)> >return> 1> > >def> userinput(>self>):> >self>.a>=> eval>(>input>())> >print>(>self>.a,>type>(>self>.a))> >print>(>self>.getykeys())> >print>(>self>.getvalyes())> > >def> insertion(>self>,k,v):> >self>.a[k]>=>v> > d>=> dict_parsing({>'k1'>:>'amit'>,>'k2'>:[>1>,>2>,>3>,>4>,>5>]})> d.getkeys()>

>

>

Ieșire:

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ---->1 d.getkeys() AttributeError: obiectul 'dict_parsing' nu are atribut 'getkeys'>

Eroare:

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ---->1 d.getkeys() AttributeError: obiectul 'dict_parsing' nu are atribut 'getkeys'>

Soluție pentru AttributeError

Erorile și excepțiile în Python pot fi gestionate folosind gestionarea excepțiilor, adică folosind try și except în Python.

Exemplu: Luați în considerare exemplul de clasă de mai sus, vrem să facem altceva, mai degrabă decât să imprimăm traceback-ul ori de câte ori apare un AttributeError.

Python3




# Python program to demonstrate> # AttributeError> class> Geeks():> > >def> __init__(>self>):> >self>.a>=> 'techcodeview.com'> # Driver's code> obj>=> Geeks()> # Try and except statement for> # Exception handling> try>:> >print>(obj.a)> > ># Raises an AttributeError> >print>(obj.b)> > # Prints the below statement> # whenever an AttributeError is> # raised> except> AttributeError:> >print>(>'There is no such attribute'>)>

>

arbore binar vs arbore binar de căutare
>

Ieșire:

techcodeview.com There is no such attribute>

Notă: Pentru a afla mai multe despre gestionarea excepțiilor, faceți clic aici.