Jokaisessa ohjelmointikielessä, jos kehitämme uusia ohjelmia, on suuri mahdollisuus saada virheitä tai poikkeuksia. Nämä virheet johtavat siihen, että ohjelmaa ei suoriteta. Yksi Pythonin useimmiten esiintyvistä virheistä on AttributeError. AttributeError voidaan määritellä virheeksi, joka ilmenee, kun attribuuttiviittaus tai määritys epäonnistuu.
Jos esimerkiksi otamme muuttujan x, meille annetaan arvo 10. Oletetaan tässä prosessissa, että haluamme liittää muuttujaan toisen arvon. Se ei ole mahdollista. Koska muuttuja on kokonaislukutyyppiä, se ei tue append-menetelmää. Joten tämän tyyppisessä ongelmassa saamme virheen nimeltä AttributeError. Oletetaan, että jos muuttuja on listatyyppinen, se tukee append-menetelmää. Silloin ei ole mitään ongelmaa eikä saa Attribuuttivirhettä.
Huomautus: Pythonin attribuuttivirheet ilmaantuvat yleensä, kun tehdään virheellinen attribuuttiviittaus.
On olemassa muutamia mahdollisuuksia saada AttributeError.
Esimerkki 1:
Python 3
# Python program to demonstrate> # AttributeError> X>=> 10> # Raises an AttributeError> X.append(>6>)> |
>
>
Lähtö:
Traceback (most recent call last): File '/home/46576cfdd7cb1db75480a8653e2115cc.py', line 5, in X.append(6) AttributeError: 'int' object has no attribute 'append'>
Esimerkki 2: Joskus mikä tahansa kirjoitusvirhe aiheuttaa attribuuttivirheen, koska Python on isot ja pienet kirjaimet erotteleva kieli.
Python 3
kevät s
# 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)> |
>
>
Lähtö:
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'> Esimerkki 3 : AttributeError voidaan myös herättää käyttäjän määrittämälle luokalle, kun käyttäjä yrittää tehdä virheellisen attribuutin viittauksen.
Python 3
# 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)> |
>
>
Lähtö:
techcodeview.com>
Virhe:
Traceback (most recent call last): File '/home/373989a62f52a8b91cb2d3300f411083.py', line 17, in print(obj.b) AttributeError: 'Geeks' object has no attribute 'b'>
Esimerkki 4: AttributeError voidaan myös nostaa käyttäjän määrittämälle luokalle, kun käyttäjä ei voi lisätä sarkaimia tai välilyöntejä koodirivien väliin.
Python 3
abstrakti luokka
#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()> |
>
>
Lähtö:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ---->1 d.getkeys() AttributeError: 'dict_parsing' -objektilla ei ole attribuuttia 'getkeys'>
Virhe:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in ---->1 d.getkeys() AttributeError: 'dict_parsing' -objektilla ei ole attribuuttia 'getkeys'>
Ratkaisu AttributeError
Pythonin virheet ja poikkeukset voidaan käsitellä poikkeuskäsittelyllä eli Pythonissa try and paitsi -komennolla.
Esimerkki: Harkitse yllä olevaa luokkaesimerkkiä, haluamme tehdä jotain muuta sen sijaan, että tulostaisimme jäljityksen aina, kun AttributeError ilmaistaan.
Python 3
# 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'>)> |
>
powershell vs bash
>
Lähtö:
techcodeview.com There is no such attribute>
Huomautus: Saat lisätietoja poikkeusten käsittelystä napsauttamalla tätä.