Lista on myös objekti, jota käytetään eri tietotyyppien elementtien tallentamiseen. On yleistä, että virhe 'lista'-objekti ei ole kutsuttavissa, kun käytät luetteloa Python-ohjelmissamme. Tässä artikkelissa opimme, miksi tämä virhe ilmenee ja kuinka se korjataan.
Mitä tarkoittaa, että 'luettelo'-objekti ei ole kutsuttavissa Pythonissa?
The 'luettelo'-objekti ei ole kutsuttavissa virhe on yleinen Python-kehittäjien kohtaama ajonaikainen virhe. Se tapahtuu, kun yrität kutsua luetteloobjektia ikään kuin se olisi funktio. Pythonissa listat ovat objekteja, jotka sisältävät järjestetyn kokoelman kohteita. Niitä käytetään indeksoimalla tai viipaloimalla, ei kutsumalla niitä kuten funktioita.
shehzad poonawalla
Syntaksi
''list' object is not callable'>
Alla on syitä siihen, miksi Pythonin luettelo-objekti ei ole kutsuttavissa Python :
- Muuttujan nimi Ristiriita toiminnon kanssa.
- Sulujen väärinkäyttö
- Menetelmä on ristiriidassa omaisuuden kanssa.
Muuttujan nimi on ristiriidassa funktion kanssa.
Alla olevassa koodissa lista on määritetty muuttujan nimeksi, joka on ristiriidassa sisäänrakennetun toiminnon kanssa lista() . Voit ratkaista tämän joko nimeämällä muuttujan uudelleen tai käyttämällä nimenomaisesti lista()-funktio alkaen sisäänrakennettu moduuli.
Python 3
# Create a list list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Create a list of quantity moreNumbers = list(range(10,21)) # Print the list and quantity print(list) print(moreNumbers)>
Lähtö
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>
Sulujen väärinkäyttö
Alla olevassa koodissa sulkujen väärinkäyttö hakasulkeiden sijaan luettelon indeksoinnissa, mikä aiheuttaa lista 'objekti ei ole kutsuttava virhe.
kirjoita json tiedostoon pythonPython 3
items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>
Lähtö
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>
Menetelmä on ristiriidassa omaisuuden kanssa.
Alla olevassa esimerkissä virhe ilmenee menetelmän välisen nimeämisristiriidan vuoksi merkit() ja ominaisuusmerkit. Tässä opiskelijaluokassa on attribuuttimerkit, joka on alun perin määritetty luetteloksi, joka sisältää opiskelijan arvosanat. Luokka määrittelee kuitenkin myös menetelmän, merkit() , joka palauttaa saman merkkiluettelon.
paras hentaiPython 3
class Student: def __init__(self, name, marks): self.name = name self.marks = marks def marks(self): return self.marks student = Student('Lalit', [95, 67, 81, 64, 87]) # Generates the error print(student.marks())>
Lähtö
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>
Ratkaisu varten Python 'lista' -objektia ei voi kutsua Pythonissa
Alla on lähestymistapoja ratkaista Python 'luettelo' -objekti ei ole kutsuttavissa Pythonissa
- Oikea muuttujan nimi
- Sulkujen oikea käyttö
- Nimeä ristiriitamenetelmä ja attribuutti uudelleen
Oikea muuttujan nimi
minä n alla oleva ratkaisu nimeä muuttuja uudelleen lista välttääksesi sisäänrakennettujen funktionimien varjostamisen. Käytä indeksoinnissa hakasulkeita sulkeiden sijaan päästäksesi käsiksi luettelon elementteihin. Tulosta molemmat luettelot nähdäksesi niiden sisällön.
Python 3 # Create a list one2nine = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Create a list of quantity moreNumbers = list(range(10,21)) # Print the list and quantity print(one2nine) print(moreNumbers)>
Lähtö
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>
Sulkujen oikea käyttö
Käytä luettelokohdetta aina hakasulkeilla, kuten alla olevassa koodissa käytetään.
Python 3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>
Lähtö
Ruler>
Nimeä ristiriitamenetelmä ja attribuutti uudelleen
Nimeämällä kiinteistön uudelleen nimellä merkit ja menetelmä siihen get_marks() , poistamme nimeämisristiriidan ja varmistamme sen opiskelija.get_marks() hakee merkkiluettelon kohtaamatta TypeError-virhettä.
Python 3 class Student: def __init__(self, name, marks): self.name = name # Change the property name to _marks self._marks = marks # Rename the method to get_marks def get_marks(self): return self._marks student = Student('Lalit', [95, 67, 81, 64, 87]) # Outputs the list of marks print(student.get_marks())>
Lähtö
[95, 67, 81, 64, 87]>