logo

Python: AttributeError

I varje programmeringsspråk, om vi utvecklar nya program, finns det stor chans att få fel eller undantag. Dessa fel ger efter för att programmet inte körs. Ett av felen i Python som oftast uppstår är AttributeError. AttributeError kan definieras som ett fel som uppstår när en attributreferens eller tilldelning misslyckas.
Till exempel, om vi tar en variabel x tilldelas vi värdet 10. I denna process antar vi att vi vill lägga till ett annat värde till den variabeln. Det är inte möjligt. Eftersom variabeln är en heltalstyp stöder den inte append-metoden. Så i den här typen av problem får vi ett fel som heter AttributeError. Anta att om variabeln är listtyp så stöder den append-metoden. Då är det inga problem och får inte Attribute-fel.

Notera: Attributfel i Python uppstår vanligtvis när en ogiltig attributreferens görs.
Det finns några chanser att få AttributeError.
Exempel 1:

Python3






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

>

>

Produktion:

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

Exempel 2: Ibland kommer varje variation i stavning att orsaka ett attributfel eftersom Python är ett skiftlägeskänsligt språk.

Python3


java lokal datumtid



# 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)>

>

>

Produktion:

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

Exempel 3 : AttributeError kan också höjas för en användardefinierad klass när användaren försöker göra en ogiltig attributreferens.

java innehåller delsträng

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

>

>

Produktion:

techcodeview.com>

Fel:

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

Exempel 4: AttributeError kan också höjas för en användardefinierad klass när användaren missar att lägga till flikar eller mellanslag mellan sina kodrader.

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()>

>

>

Produktion:

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ---->1 d.getkeys() AttributeError: 'dict_parsing' objekt har inget attribut 'getkeys'>

Fel:

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ---->1 d.getkeys() AttributeError: 'dict_parsing' objekt har inget attribut 'getkeys'>

Lösning för AttributeError

Fel och undantag i Python kan hanteras med undantagshantering, dvs genom att använda försök och undantag i Python.

Exempel: Tänk på klassexemplet ovan, vi vill göra något annat istället för att skriva ut spårningen närhelst ett AttributeError uppstår.

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

>

företag vs företag
>

Produktion:

techcodeview.com There is no such attribute>

Notera: För att veta mer om undantagshantering klicka här.