Kursus
Di Python, pesan error yang umum adalah sebagai berikut:
'builtin_function_or_method' object is not subscriptable
Python menampilkan error ini ketika sebuah fungsi atau metode diikuti oleh notasi tanda kurung siku []. Namun, fungsi adalah objek yang dapat dipanggil (callable). Karena itu, fungsi memerlukan tanda kurung (), yang kadang juga disebut tanda kurung bulat.
Mari lihat contoh saat Python menampilkan error ini:
numbers = [2, 4, 6, 8]
numbers.append[10]
Traceback (most recent call last):
...
TypeError: 'builtin_function_or_method' object is not subscriptable
Bagian berikut membahas error ini lebih lanjut.
Memahami Error
Fungsi Python adalah objek yang dapat dipanggil, yang berarti kita dapat menggunakan tanda kurung setelah nama fungsi untuk mengeksekusi kode dalam definisi fungsi. Salah satu contoh paling umum dari fungsi bawaan di Python adalah print():
print("This is a built-in function")
This is a built-in function
Tanda kurung digunakan untuk memanggil fungsi di Python. Namun, menggunakan tanda kurung siku alih-alih tanda kurung akan menimbulkan error:
print["This is a built-in function"]
Traceback (most recent call last):
...
TypeError: 'builtin_function_or_method' object is not subscriptable
Mari kita uraikan pesan error tersebut menjadi bagian-bagian kuncinya:
- Objek 'builtin_function_or_method'
- Tidak dapat di-subscript (not subscriptable)
Pada contoh di atas, print() adalah fungsi bawaan. Deskripsinya juga merujuk pada metode, yaitu fungsi yang menjadi bagian dari sebuah kelas. Python memiliki banyak metode bawaan yang terkait dengan tipe datanya. Mari lihat contoh lain yang menimbulkan pesan error ini:
name = "DataCamp"
print(name.count["a"])
Traceback (most recent call last):
...
TypeError: 'builtin_function_or_method' object is not subscriptable
Metode .count(), seperti halnya fungsi pada umumnya, memerlukan tanda kurung:
print(name.count("a"))
3
Skenario ini mirip dengan contoh pada bagian pendahuluan, yang menggunakan metode list .append(). Berikut versi yang benar dengan tanda kurung:
numbers = [2, 4, 6, 8]
numbers.append(10)
print(numbers)
[2, 4, 6, 8, 10]
TypeError: 'function' object is not subscriptable
Python menampilkan error serupa pada fungsi yang didefinisikan pengguna:
def greet_person(name):
print(f"Hello {person}")
greet_person["James"]
Traceback (most recent call last):
...
TypeError: 'function' object is not subscriptable
Namun, fungsi greet_person() bukan salah satu fungsi bawaan di Python. Pesan error menyatakan ini adalah 'function' bukan 'builtin_function_or_method'.
Bagian kedua dari pesan error merujuk pada istilah 'subscriptable'. Sebuah objek Python bersifat subscriptable jika kita dapat menggunakan tanda kurung siku untuk mengakses salah satu elemennya. Contoh umum objek yang subscriptable adalah sebuah urutan (sequence), yang bisa diindeks menggunakan tanda kurung siku:
print(numbers[0])
print(numbers[-1])
print(numbers[1:4])
2
10
[4, 6, 8]
Tuple dan string adalah contoh lain dari urutan. Oleh karena itu, keduanya juga subscriptable:
more_numbers = 10, 30, 50
print(more_numbers[0])
name = "DataCamp"
print(name[0])
10
'D'
Python mapping juga bersifat subscriptable. Mapping yang paling umum di Python adalah dictionary:
points = {"James": 10, "Mary": 14}
print(points["Mary"])
14
Kunci dictionary digunakan alih-alih indeks di dalam tanda kurung siku.
Python: Callable vs. Subscriptable
Urutan (sequence) dan mapping adalah contoh objek Python yang subscriptable. Kita dapat menggunakan tanda kurung siku setelah nama objek untuk mengakses objek dari dalam struktur data. Sebuah kelas Python membuat objek yang subscriptable jika ia mendefinisikan metode khusus .__getitem__().
Fungsi dan metode adalah contoh objek yang dapat dipanggil (callable). Kita dapat menggunakan tanda kurung setelah nama objek untuk memanggilnya. Memanggil fungsi atau metode akan mengeksekusi kode dalam definisi fungsi.
Kelas adalah objek Python lain yang callable. Memanggil kelas akan membuat sebuah instance. Secara umum, sebuah objek Python bersifat callable jika kelasnya mendefinisikan metode khusus .__call__().
Python menampilkan pesan error serupa ketika kita mencoba memanggil objek yang tidak callable:
numbers = [2, 4, 6, 8]
print(numbers(0))
Traceback (most recent call last):
...
TypeError: 'list' object is not callable
Variabel numbers adalah list, yang tidak callable. Cara yang benar untuk mengakses item pertama dari list adalah menggunakan tanda kurung siku: numbers[0]. Fungsi, metode, dan kelas adalah objek callable yang paling umum di Python.
Memperbaiki 'builtin_function_or_method' object is not subscriptable`
Python menampilkan pesan error ``'builtin_function_or_method' object is not subscriptable` ketika sebuah fungsi atau metode diikuti oleh tanda kurung siku. Perhatikan apakah ada tanda kurung siku tepat setelah nama fungsi atau metode dan gantilah dengan tanda kurung.
Dalam beberapa kasus, sebuah fungsi atau metode memiliki argumen berupa list, yang didefinisikan menggunakan tanda kurung siku. Namun, perhatikan bahwa list tersebut didefinisikan di dalam tanda kurung:
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]
Dalam contoh-contoh ini, nama fungsi atau metode diikuti oleh tanda kurung. Argumen di dalam tanda kurung adalah sebuah list. Notasi tanda kurung siku untuk mendefinisikan list berbeda dengan notasi tanda kurung siku yang digunakan pada sequence, mapping, dan objek subscriptable lainnya.
Tips Debugging
Salah satu hal yang bisa Anda lakukan adalah memeriksa tipe objek menggunakan fungsi bawaan type():
print(type(print))
numbers = [2, 4, 6, 8]
print(type(numbers.append))
<class 'builtin_function_or_method'>
Output mengonfirmasi bahwa objek tersebut adalah fungsi atau metode bawaan, yang bersifat callable. Ada juga fungsi bawaan bernama callable() yang mengembalikan True jika argumennya dapat dipanggil:
print(callable(numbers.append))
True
Tips debugging lain yang perlu dipertimbangkan:
- Periksa jenis tanda kurung. Objek callable, seperti fungsi dan metode, harus diikuti oleh tanda kurung. Tanda kurung siku digunakan untuk sequence, mapping, dan objek subscriptable lainnya.
- Cari petunjuk dalam pesan error yang merujuk pada fungsi atau metode bawaan dan objek subscriptable. Nomor baris dalam pesan error menunjuk ke baris yang berisi error.
Kesimpulan
Bahasa pemrograman seperti Python menggunakan tanda yang berbeda untuk tujuan yang berbeda. Tanda kurung siku digunakan tepat setelah nama objek untuk mengakses elemen dari struktur data. Notasi tanda kurung siku ini bekerja pada objek yang subscriptable. Tanda kurung siku juga digunakan untuk membuat list ketika tidak langsung mengikuti nama objek.
Tanda kurung digunakan setelah nama objek untuk memanggil objek tersebut. Fungsi dan metode adalah contoh objek callable di Python. Tanda kurung juga terkait dengan tuple di Python, dan digunakan untuk mengelompokkan bagian-bagian pernyataan saat diperlukan.
Python akan menampilkan pengecualian 'builtin_function_or_method' object is not subscriptable ketika sebuah fungsi atau metode bawaan diikuti oleh tanda kurung siku. Cara yang benar untuk memanggil fungsi atau metode adalah dengan menggunakan tanda kurung.
Anda dapat membaca lebih lanjut tentang fungsi dalam Python Functions: How to Call & Write Functions di DataCamp.
Saya belajar Fisika dan Matematika pada tingkat sarjana di University of Malta. Kemudian, saya pindah ke London dan meraih gelar PhD dalam bidang Fisika dari Imperial College. Saya meneliti teknik optik baru untuk memindai retina manusia. Sekarang, saya berfokus menulis tentang Python, berkomunikasi tentang Python, dan mengajar Python.

