logo

Jak opravit objekt „seznam“ nelze v Pythonu volat

Seznam je také objekt, který se používá k ukládání prvků různých datových typů. Při používání seznamu v našich programech Python je běžné vidět, že objekt „seznam“ chyby nelze volat. V tomto článku se dozvíme, proč k této chybě dochází a jak ji vyřešit.

Co to znamená, že objekt „seznam“ není v Pythonu volatelný?

The Objekt „seznam“ nelze volat chyba je běžná runtime chyba, se kterou se setkávají vývojáři Pythonu. Dochází k němu, když se pokusíte volat objekt seznamu, jako by to byla funkce. V Pythonu jsou seznamy objekty, které obsahují uspořádanou kolekci položek. Jsou přístupné pomocí indexování nebo dělení, nikoli voláním jako funkce.



Syntax

 ''list' object is not callable'>

Níže jsou uvedeny důvody, proč v Pythonu nelze volat objekt „list“. Krajta :

dělení řetězců c++
  • Název proměnné Konflikty s funkcí.
  • Zneužití závorek
  • Metoda koliduje s Property.

Název proměnné je v konfliktu s funkcí.

V níže uvedeném kódu je seznam přiřazen jako název proměnné, což je v konfliktu s vestavěnou funkcí seznam() . Chcete-li to vyřešit, přejmenujte proměnnou nebo explicitně přistupujte k funkce list(). z vestavěný 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ýstup

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žití závorek

V níže uvedeném kódu Nesprávné použití závorek místo hranatých závorek pro indexování seznamu, což způsobuje „ seznam ‘ objekt není volatelná chyba.

Python3
items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>

Výstup



Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>

Metoda koliduje s Vlastností.

V níže uvedeném příkladu dochází k chybě kvůli konfliktu názvů mezi metodou známky() a značky vlastností. Zde má třída Student atribut značky, který je zpočátku přiřazen jako seznam obsahující známky studenta. Třída však také definuje metodu, známky() , který vrátí stejný seznam značek.

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ýstup

Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>

Řešení pro Objekt „seznam“ Pythonu nelze v Pythonu volat

Níže jsou uvedeny přístupy k řešení objektu „seznam“ Pythonu, který nelze v Pythonu volat

  • Správný název proměnné
  • Správné použití závorek
  • Přejmenovat metodu konfliktu a atribut

Správný název proměnné

n níže uvedené řešení přejmenujte proměnnou seznam abyste se vyhnuli stínování názvů vestavěných funkcí. Pro přístup k prvkům v seznamu použijte pro indexování místo závorek hranaté závorky. Vytiskněte oba seznamy a zobrazte jejich 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ýstup
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>

Správné použití závorek

Pro přístup k položce seznamu vždy používejte hranaté závorky, jak se používá v níže uvedeném kódu.

Python3
items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>

Výstup
Ruler>

Přejmenovat metodu konfliktu a atribut

Přejmenováním nemovitosti na značky a způsob k tomu get_marks() , odstraníme konflikt pojmenování a zajistíme to student.get_marks() načte seznam značek, aniž by došlo k chybě 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ýstup
[95, 67, 81, 64, 87]>