Zoznam je tiež objekt, ktorý sa používa na ukladanie prvkov rôznych typov údajov. Pri používaní zoznamu v našich programoch Python je bežné vidieť, že objekt „zoznam“ chyby nie je možné volať. V tomto článku sa dozvieme, prečo sa táto chyba vyskytuje a ako ju vyriešiť.
Čo to znamená, že objekt „zoznam“ nie je možné volať v Pythone?
The objekt „zoznam“ nie je možné volať chyba je bežná chyba runtime, s ktorou sa stretávajú vývojári Pythonu. Vyskytuje sa, keď sa pokúsite zavolať objekt zoznamu, ako keby to bola funkcia. V Pythone sú zoznamy objekty, ktoré obsahujú usporiadanú kolekciu položiek. Sú prístupné pomocou indexovania alebo krájania, nie volaním ako funkcie.
Syntax
''list' object is not callable'>
Nižšie sú uvedené dôvody, prečo sa objekt „zoznam“ v Pythone nedá volať Python :
- Názov premennej Konflikt s funkciou.
- Zneužitie zátvoriek
- Metóda koliduje s vlastnosťou.
Názov premennej je v konflikte s funkciou.
V nižšie uvedenom kóde je zoznam priradený ako názov premennej, čo je v rozpore so vstavanou funkciou zoznam() . Ak chcete tento problém vyriešiť, premennú premenujte alebo explicitne pristupujte k nej funkcia list(). z vstavaný modul.
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)>
Výkon
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>
Zneužitie zátvoriek
V nižšie uvedenom kóde Zneužitie zátvoriek namiesto hranatých zátvoriek na indexovanie zoznamu, čo spôsobuje „ zoznam ‘ objekt nie je volateľná chyba.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>
Výkon
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>
Metóda koliduje s vlastnosťou.
V nižšie uvedenom príklade sa chyba vyskytuje v dôsledku konfliktu názvov medzi metódou známky() a majetkové značky. Tu má trieda Študent atribút značky, ktorý je na začiatku priradený ako zoznam obsahujúci známky študenta. Trieda však tiež definuje metódu, známky() , ktorý vráti rovnaký zoznam známok.
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())> Výkon
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>
Riešenie pre Objekt „zoznamu“ jazyka Python nie je možné volať v jazyku Python
Nižšie sú uvedené prístupy k vyriešeniu objektu „zoznam“ Pythonu, ktorý nie je možné volať v Pythone
- Správny názov premennej
- Správne používanie zátvoriek
- Premenovať metódu konfliktu a atribút
Správny názov premennej
ja V nižšie uvedenom riešení premennú premenujte zoznam aby ste sa vyhli tieňovaniu názvov vstavaných funkcií. Na prístup k prvkom v zozname použite na indexovanie hranaté zátvorky namiesto zátvoriek. Vytlačte oba zoznamy, aby sa zobrazil ich obsah.
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)>
Výkon
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>
Správne používanie zátvoriek
Na prístup k položke zoznamu vždy používajte hranaté zátvorky, ako sa používa v kóde nižšie.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>
Výkon
Ruler>
Premenovať metódu konfliktu a atribút
Premenovaním nehnuteľnosti na známky a spôsob get_marks() , odstránime konflikt názvov a zabezpečíme to student.get_marks() načíta zoznam značiek bez toho, aby sa vyskytla chyba 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())> Výkon
[95, 67, 81, 64, 87]>