Saraksts ir arī objekts, kas tiek izmantots dažādu datu tipu elementu glabāšanai. Lietojot sarakstu mūsu Python programmās, bieži tiek novērots kļūdas objekts “saraksts”, kas nav izsaucams. Šajā rakstā mēs uzzināsim, kāpēc šī kļūda rodas un kā to novērst.
Ko tas nozīmē, ka “saraksta” objekts nav izsaucams programmā Python?
The Objekts ‘saraksts’ nav izsaucams kļūda ir bieži sastopama izpildlaika kļūda, ar kuru saskaras Python izstrādātāji. Tas notiek, mēģinot izsaukt saraksta objektu tā, it kā tā būtu funkcija. Programmā Python saraksti ir objekti, kuros ir sakārtota vienumu kolekcija. Tiem var piekļūt, izmantojot indeksēšanu vai sagriešanu, nevis izsaucot tās kā funkcijas.
Sintakse
''list' object is not callable'>
Tālāk ir norādīti iemesli, kāpēc Python “saraksta” objekts nav izsaucams Python :
js nomaiņa
- Mainīgais nosaukums Konflikts ar funkciju.
- Nepareiza iekavu izmantošana
- Metode ir pretrunā ar īpašumu.
Mainīgā nosaukums ir pretrunā ar funkciju.
Tālāk esošajā kodā saraksts ir piešķirts kā mainīgā nosaukums, kas ir pretrunā ar iebūvēto funkciju saraksts () . Lai to atrisinātu, pārdēvējiet mainīgo vai skaidri piekļūstiet list() funkcija no iebūvētais modulis.
Python3
# 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)>
Izvade
mašīnrakstā katrs
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>
Nepareiza iekavu izmantošana
Zemāk esošajā kodā saraksta indeksēšanai tiek ļaunprātīgi izmantotas iekavas, nevis kvadrātiekavas, izraisot “ sarakstu ' objekts nav izsaucama kļūda.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>
Izvade
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>
Metode ir pretrunā ar īpašumu.
Tālāk esošajā piemērā kļūda rodas nosaukšanas konflikta dēļ starp metodi atzīmes () un īpašuma zīmes. Šeit Studentu klasei ir atribūtu atzīmes, kas sākotnēji tiek piešķirtas kā saraksts, kurā ir studenta atzīmes. Tomēr klase definē arī metodi, atzīmes () , kas atgriež to pašu atzīmju sarakstu.
Python3 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())>
Izvade
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>
Risinājums priekš Python “saraksta” objekts Python nav izsaucams
Tālāk ir norādītas pieejas, kā atrisināt Python “saraksta” objektu, kas nav izsaucams Python
datortīkli
- Pareizs mainīgā nosaukums
- Pareiza iekavu lietošana
- Pārdēvējiet konflikta metodi un atribūtu
Pareizs mainīgā nosaukums
es n zemāk esošajā risinājumā pārdēvējiet mainīgo sarakstu lai izvairītos no iebūvēto funkciju nosaukumu ēnojuma. Lai piekļūtu saraksta elementiem, indeksēšanai izmantojiet kvadrātiekavas, nevis iekavas. Izdrukājiet abus sarakstus, lai parādītu to saturu.
Python3 # 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)>
Izvade
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>
Pareiza iekavu lietošana
Lai piekļūtu saraksta vienumam, vienmēr izmantojiet kvadrātiekavas, kā izmantots tālāk norādītajā kodā.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>
Izvade
Ruler>
Pārdēvējiet konflikta metodi un atribūtu
Pārdēvējot īpašumu par atzīmes un metode get_marks() , mēs novērsīsim nosaukumu konfliktu, nodrošinot to students.get_marks() izgūst atzīmju sarakstu, nesaskaroties ar TypeError.
Python3 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())>
Izvade
[95, 67, 81, 64, 87]>