Anda di halaman 1dari 7

Constructor & Destructor pada Python

Konstruktor
Konstruktor umumnya digunakan untuk instantiasi objek. Tugas konstruktor adalah
menginisialisasi (menetapkan nilai) ke anggota data kelas ketika objek kelas dibuat. Dalam
Python metode __init __ () disebut konstruktor dan selalu disebut ketika suatu objek dibuat.

Sintaks deklarasi konstruktor

Jenis-jenis konstruktor
1. Construktor default
Konstruktor default adalah konstruktor sederhana yang tidak menerima argumen apa pun.
Definisi ini hanya memiliki satu argumen yang merupakan referensi ke instance yang sedang
dibangun.
Contoh :

Output :
2. Construktor Parameters
Konstruktor parameters mengambil argumen pertama sebagai referensi ke instance yang sedang
dibangun dikenal sebagai self dan sisa argument disediakan oleh programmer.

Contoh :

Output :
Destruktor
Destructors dipanggil ketika suatu objek dihancurkan. Dalam Python, destruktor tidak diperlukan
sebanyak yang dibutuhkan di C ++ karena Python memiliki pengumpul sampah yang menangani
manajemen memori secara otomatis.
Metode __del __ () dikenal sebagai metode destruktor dengan Python. Disebut ketika semua
referensi ke objek telah dihapus yaitu ketika sebuah objek dikumpulkan sampah.

Sintaksis deklarasi destruktor

Contoh 1:
Berikut adalah contoh sederhana dari destruktor. Dengan menggunakan kata kunci del, saya
menghapus semua referensi objek 'obj', oleh karena itu destructor dipanggil secara otomatis.

Output :

Catatan: destruktor dipanggil setelah program berakhir atau ketika semua referensi ke objek
dihapus yaitu ketika jumlah referensi menjadi nol, bukan ketika objek keluar dari ruang lingkup.
Contoh 2:
Contoh ini memberikan penjelasan dari catatan yang disebutkan di atas. Di sini, perhatikan
bahwa destruktor dipanggil setelah ‘Program End…’ dicetak.

Output :
Contoh 3 :
Sekarang, perhatikan contoh berikut.

Output :

Dalam contoh ini ketika fungsi fun () dipanggil, ia menciptakan turunan dari kelas B yang beralih
sendiri ke kelas A, yang kemudian menetapkan referensi ke kelas B dan menghasilkan referensi
melingkar.
Secara umum, pengumpul sampah Python yang digunakan untuk mendeteksi jenis referensi
siklik ini akan menghapusnya tetapi dalam contoh ini penggunaan destruktor kustom menandai
item ini sebagai "tidak dapat dikumpulkan".
Sederhananya, ia tidak tahu urutan untuk menghancurkan objek, jadi ia meninggalkannya. Oleh
karena itu, jika instance Kalian terlibat dalam referensi melingkar mereka akan hidup dalam
memori selama aplikasi berjalan.
Enkapsulasi Pada Python

Di dalam pemograman berorientasi objek ada istilah Encapsulation/Enakpsulasi


Enkapsulasi mengacu pada bundling data dengan metode yang beroperasi pada data tersebut,
atau pembatasan akses langsung ke beberapa komponen objek,contohnya kapsul obat di mana
kita bisa memegang dan meminumnya namun kita tidak bisa membuka dan mengganti isinya
karena di bungkus oleh kapsul,enakpsulasi memiliki cara kerja yang hampir sama dimana setia
attribute/method di bungkus dengan hak akses/sifat khusu apakah attribute itu bisa di isi ataupun
bisa di lihat.
enkapsulasi juga di gunakan untuk alasan keamaan contohnya data mahasiswa dimana kita bisa
melihat nama mahasiswa namun kita tidak bisa mengganti nama mahasiswanya,itu artinya
bahwa attribute nama di dalam objek mahasiswa sudah dibungkus agar hanya bisa di lihat saja
dan tidak bisa di isi nilai lain
baiklah kita akan coba mempratekannya :

lalu bagai mana kita menampilkan nilai nama ataupun megganti/memberikan nilai nama baru?
maka kita harus membuat fungsi untuk keduanya

lalu kita bisa menggunakan method tersebut seperti ini


mungkin agak sedikit ribet dan panjang hanya untuk satu variable namun metode ini bisa
berguna saat kita hanya ingin attribute __nama hanya menampilkan nilai dan tidak boleh
memasukan nilai baru,maka kita hanya perlu menghapus methode setNama
selain menggunakan fungsi di atas di dalam python ada sebuah metode yang bernama
decorator yang berisi property,setter,gettter,deleter

singkatnya decorator membuat sebuah property yang mewakili sebuah attribute ataupun
method,disini property nama mewakili attribute __nama

Anda mungkin juga menyukai