📅  最后修改于: 2023-12-03 15:03:22.613000             🧑  作者: Mango
Metakelas adalah kelas yang digunakan untuk membuat kelas lain. Secara singkat, metakelas adalah kelas pengaturnya kelas.
Metakelas digunakan di Python sebagai mekanisme untuk mengontrol bagaimana kelas-kelas itu dibuat dan bagaimana mereka bertingkah laku.
Metakelas digunakan dalam OOP (Object-Oriented Programming) untuk memberikan banyak fitur seperti pemeriksaan kesalahan, modifikasi dinamis, pengaturan aksesibilitas, dan banyak lagi.
Python menyediakan kelas dasar yang disebut type yang merupakan metakelas bawaan. Semua kelas di Python adalah instance dari kelas ini. Oleh karena itu, untuk membuat metakelas kita perlu mewarisi kelas type.
Berikut ini adalah contoh penggunaan metakelas di Python:
class MetaKelas(type):
def __new__(cls, name, bases, attrs):
# melakukan modifikasi
attrs['deskripsi'] = 'Ini adalah kelas baru'
attrs['harga'] = 1000
# memanggil konstruktor kelas induk
new_class = super().__new__(cls, name, bases, attrs)
# melakuka pemeriksaan kesalahan
if not hasattr(new_class, 'nama_produk'):
raise TypeError("Setiap produk harus memiliki nama.")
return new_class
class Produk(metaclass=MetaKelas):
nama_produk = 'Produk Baru'
Pada contoh di atas kita membuat sebuah metakelas bernama MetaKelas yang mewarisi kelas type. Metakelas ini akan memberikan deskripsi dan harga produk secara otomatis ketika sebuah kelas produk dibuat.
Kita pun dapat melakuka pemeriksaan kesalahan pada kelas produk seperti pada contoh di atas. Metakelas menjadi sangat berguna ketika kita ingin memiliki kontrol penuh pada pembuatan kelas yang kita buat.
Dalam OOP, metakelas dianggap sebagai "magis", karena mereka memungkinkan kita untuk melakukan hal-hal yang mungkin tidak mungkin dilakukan dengan OOP biasa.
Jadi, untuk menggunakan metakelas di Python, kita harus membuat sebuah kelas yang mewarisi kelas type dan kemudian menetapkan metakelas tersebut sebagai metakelas dari kelas yang ingin kita buat.