Weiter zum Inhalt

So behebst du den Fehler builtin_function_or_method' object is not subscriptable

Um den Fehler "'builtin_function_or_method' object is not subscriptable" zu beheben, rufe die Funktion oder Methode mit Klammern () statt mit eckigen Klammern [] auf.
Aktualisiert 18. Sept. 2026  · 6 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

In Python taucht häufig folgende Fehlermeldung auf:

'builtin_function_or_method' object is not subscriptable

Python wirft diesen Fehler, wenn auf eine Funktion oder Methode direkt eckige Klammern [] folgen. Funktionen sind jedoch aufrufbare Objekte und benötigen deshalb runde Klammern () (auch "Klammern" genannt).

Schauen wir uns ein Beispiel an, in dem Python diesen Fehler ausgibt:

numbers = [2, 4, 6, 8]
numbers.append[10]
Traceback (most recent call last):
  ...
TypeError: 'builtin_function_or_method' object is not subscriptable

Der nächste Abschnitt beleuchtet diesen Fehler genauer.

Den Fehler verstehen

Python-Funktionen sind aufrufbare Objekte. Das bedeutet, wir können nach dem Funktionsnamen Klammern setzen, um den Code in der Funktionsdefinition auszuführen. Ein bekanntes Beispiel für eine eingebaute Funktion in Python ist print():

print("This is a built-in function")
This is a built-in function

Klammern werden in Python zum Aufrufen einer Funktion verwendet. Verwendest du stattdessen eckige Klammern, führt das zu einem Fehler:

print["This is a built-in function"]
Traceback (most recent call last):
  ...
TypeError: 'builtin_function_or_method' object is not subscriptable

Zerlegen wir die Fehlermeldung in ihre Kernaussagen:

  • Ein Objekt vom Typ 'builtin_function_or_method'
  • Nicht indizierbar ("not subscriptable")

Im obigen Beispiel ist print() eine eingebaute Funktion. Die Beschreibung erwähnt auch Methoden, also Funktionen, die Teil einer Klasse sind. Python stellt viele eingebaute Methoden für seine Datentypen bereit. Hier ein weiteres Beispiel, das dieselbe Fehlermeldung auslöst:

name = "DataCamp"
print(name.count["a"])
Traceback (most recent call last):
  ...
TypeError: 'builtin_function_or_method' object is not subscriptable

Die Methode .count() benötigt – wie Funktionen generell – Klammern:

print(name.count("a"))
3

Dieses Szenario entspricht dem Beispiel aus der Einleitung mit der Listenmethode .append(). So sieht die korrekte Version mit Klammern aus:

numbers = [2, 4, 6, 8]
numbers.append(10)
print(numbers)
[2, 4, 6, 8, 10]

TypeError: 'function' object is not subscriptable

Einen ähnlichen Fehler wirft Python auch bei selbst definierten Funktionen:

def greet_person(name):
    print(f"Hello {person}")
   
greet_person["James"]
Traceback (most recent call last):
  ...
TypeError: 'function' object is not subscriptable

Allerdings gehört greet_person() nicht zu den eingebauten Funktionen von Python. Deshalb spricht die Fehlermeldung hier von 'function' und nicht von 'builtin_function_or_method'.

Der zweite Teil der Fehlermeldung bezieht sich auf den Begriff "subscriptable". Ein Python-Objekt ist indizierbar, wenn wir mit eckigen Klammern auf eines seiner Elemente zugreifen können. Ein typisches Beispiel für ein indizierbares Objekt ist eine Sequenz, die mit eckigen Klammern indiziert wird:

print(numbers[0])
print(numbers[-1])
print(numbers[1:4])
2
10
[4, 6, 8]

Tupel und Strings sind weitere Beispiele für Sequenzen und daher ebenfalls indizierbar:

more_numbers = 10, 30, 50
print(more_numbers[0])
name = "DataCamp"
print(name[0])
10
'D'

Python Mappings sind ebenfalls indizierbar. Das gebräuchlichste Mapping in Python ist das Dictionary:

points = {"James": 10, "Mary": 14}
print(points["Mary"])
14

Bei Dictionaries verwendest du innerhalb der eckigen Klammern Schlüssel statt Indizes.

Python: Callable vs. Subscriptable

Sequenzen und Mappings sind Beispiele für indizierbare (subscriptable) Python-Objekte. Mit eckigen Klammern nach dem Objektnamen greifst du auf ein Element der Datenstruktur zu. Eine Python-Klasse erzeugt indizierbare Objekte, wenn sie die spezielle Methode .__getitem__() definiert.

Funktionen und Methoden sind Beispiele für aufrufbare (callable) Objekte. Mit Klammern nach dem Objektnamen rufst du sie auf. Dadurch wird der Code in der Funktionsdefinition ausgeführt.

Auch Klassen sind aufrufbare Python-Objekte. Das Aufrufen einer Klasse erzeugt eine Instanz. Allgemein gilt: Ein Python-Objekt ist aufrufbar, wenn seine Klasse die Spezialmethode .__call__() definiert.

Python wirft eine ähnliche Fehlermeldung, wenn wir versuchen, ein nicht aufrufbares Objekt aufzurufen:

numbers = [2, 4, 6, 8]
print(numbers(0))
Traceback (most recent call last):
  ...
TypeError: 'list' object is not callable

Die Variable numbers ist eine Liste und damit nicht aufrufbar. Der richtige Zugriff auf das erste Element erfolgt mit eckigen Klammern: numbers[0]. Funktionen, Methoden und Klassen sind die gängigsten aufrufbaren Objekte in Python.

'builtin_function_or_method' object is not subscriptable beheben

Python gibt die Fehlermeldung 'builtin_function_or_method' object is not subscriptable aus, wenn auf eine Funktion oder Methode eckige Klammern folgen. Achte auf eckige Klammern direkt nach dem Funktions- oder Methodennamen und ersetze sie durch Klammern.

In manchen Fällen übergibst du einer Funktion oder Methode eine Liste als Argument, die mit eckigen Klammern definiert wird. Beachte jedoch, dass die Liste innerhalb der Klammern steht:

number_of_values = len([10, 30, 50])
print(number_of_values)
numbers = [2, 4, 6, 8]
numbers.extend([10, 12])
print(numbers)
3
[2, 4, 6, 8, 10, 12]

In diesen Beispielen folgen auf den Funktions- oder Methodennamen Klammern. Das Argument innerhalb der Klammern ist eine Liste. Die eckigen Klammern zur Listendefinition unterscheiden sich von den eckigen Klammern, die du bei Sequenzen, Mappings und anderen indizierbaren Objekten für den Zugriff verwendest.

Tipps zum Debuggen

Du kannst zunächst den Objekttyp mit der eingebauten Funktion type() prüfen:

print(type(print))
numbers = [2, 4, 6, 8]
print(type(numbers.append))
<class 'builtin_function_or_method'>

Die Ausgabe bestätigt, dass es sich um eine eingebaute Funktion oder Methode handelt – also um ein aufrufbares Objekt. Außerdem gibt es die eingebaute Funktion callable(), die True zurückgibt, wenn ihr Argument aufrufbar ist:

print(callable(numbers.append))
True

Weitere Debugging-Tipps:

  • Prüfe die Art der Klammern. Aufrufbare Objekte wie Funktionen und Methoden müssen mit Klammern folgen. Eckige Klammern nutzt du für Sequenzen, Mappings und andere indizierbare Objekte.
  • Achte auf Hinweise in der Fehlermeldung zu eingebauten Funktionen oder Methoden und zu indizierbaren Objekten. Die Zeilennummer in der Meldung zeigt dir, wo der Fehler steckt.

Fazit

Programmiersprachen wie Python verwenden unterschiedliche Zeichen für unterschiedliche Zwecke. Direkt nach einem Objektnamen dienen eckige Klammern dazu, ein Element aus einer Datenstruktur zu lesen. Diese Notation funktioniert bei indizierbaren Objekten. Eckige Klammern werden auch verwendet, um Listen zu erstellen, sofern sie nicht unmittelbar auf einen Objektnamen folgen.

Klammern verwendest du nach einem Objektnamen, um das Objekt aufzurufen. Funktionen und Methoden sind Beispiele für aufrufbare Objekte in Python. Klammern kennzeichnen außerdem Tupel und dienen dazu, Ausdrücke bei Bedarf zu gruppieren.

Python wirft die Ausnahme 'builtin_function_or_method' object is not subscriptable, wenn auf eine eingebaute Funktion oder Methode eckige Klammern folgen. Der richtige Aufruf einer Funktion oder Methode erfolgt mit Klammern.

Mehr zu Funktionen findest du in DataCamps Python Functions: How to Call & Write Functions.


Stephen Gruppetta's photo
Author
Stephen Gruppetta
LinkedIn
Twitter

Ich habe Physik und Mathematik auf UG-Ebene an der Universität Malta studiert. Dann zog ich nach London und machte meinen Doktor in Physik am Imperial College. Ich habe an neuartigen optischen Techniken zur Abbildung der menschlichen Netzhaut gearbeitet. Jetzt konzentriere ich mich darauf, über Python zu schreiben, über Python zu kommunizieren und Python zu unterrichten.

Themen
Python

Lerne Python mit diesen Kursen!

Kurs

Einführung in Python

4 Std.
7M
Lerne in nur vier Stunden die Grundlagen der Datenanalyse mit Python und entdecke beliebte Python-Pakete.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow