Getter: Metode dalam Pemrograman Berorientasi Objek (OOP) yang membantu mengakses atribut privat dari sebuah kelas.
Setter: Metode dalam fitur OOP yang membantu menetapkan nilai ke atribut privat dalam sebuah kelas.
Atribut Privat - Enkapsulasi
Jika Anda belum familiar dengan atribut privat atau metode privat di Python, bacalah artikel DataCamp ini.
Mari lihat bagaimana Anda dapat mengimplementasikan atribut privat di Python.
classSampleClass:def__init__(self, a):## private varibale or property in Python
self.__a = a
## getter method to get the properties using an objectdefget_a(self):return self.__a
## setter method to change the value 'a' using an objectdefset_a(self, a):
self.__a = a
Didukung oleh
SampleClass memiliki tiga metode.
__init__:- Digunakan untuk menginisialisasi atribut atau properti dari sebuah kelas.
__a:- Ini adalah atribut privat.
get_a:- Digunakan untuk mendapatkan nilai atribut privat a.
set_a:- Digunakan untuk menetapkan nilai a menggunakan sebuah objek dari kelas.
Anda tidak dapat mengakses variabel privat secara langsung di Python. Itulah mengapa Anda mengimplementasikan metode getter.
Mari lihat bagaimana kelas tersebut bekerja.
## creating an object
obj = SampleClass(10)## getting the value of 'a' using get_a() methodprint(obj.get_a())## setting a new value to the 'a' using set_a() method
obj.set_a(45)print(obj.get_a())Didukung oleh
Begitulah cara Anda mengimplementasikan atribut privat, getter, dan setter di Python. Proses yang sama diikuti di Java. Mari tulis implementasi yang sama dengan cara yang lebih Pythonic.
classPythonicWay:def__init__(self, a):
self.a = a
Didukung oleh
Anda tidak memerlukan metode getter atau setter untuk mengakses atau mengubah atribut. Anda dapat mengaksesnya langsung menggunakan nama atribut.
Mari lihat.
## Creating an object for the 'PythonicWay' class
obj = PythonicWay(100)print(obj.a)Didukung oleh
SampleClass menyembunyikan atribut dan metode privat. Ini mengimplementasikan fitur enkapsulasi dari OOP.
PythonicWay tidak menyembunyikan data. Ini tidak mengimplementasikan fitur enkapsulasi apa pun.
Mana yang lebih baik digunakan?
Ini bergantung pada kebutuhan kita. Jika Anda menginginkan atribut dan metode privat, Anda dapat mengimplementasikan kelas menggunakan metode setter, getter, jika tidak Anda akan mengimplementasikannya dengan cara biasa.
Properti
Sekarang, bagaimana jika Anda ingin memiliki beberapa kondisi untuk menetapkan nilai sebuah atribut di SampleClass.
Misalnya, jika nilai yang kita berikan genap dan positif maka kita dapat menetapkannya ke atribut, jika tidak tetapkan nilainya menjadi 2.
Mari implementasikan ini dengan mengubah metode set_a() di SampleClass.
classSampleClass1:def__init__(self, a):## calling the set_a() method to set the value 'a' by checking certain conditions
self.set_a(a)## getter method to get the properties using an objectdefget_a(self):return self.__a
## setter method to change the value 'a' using an objectdefset_a(self, a):## condition to check whether 'a' is suitable or notif a >0and a %2==0:
self.__a = a
else:
self.__a =2Didukung oleh
Mari periksa kelasnya dengan membuat sebuah objek.
## creating an object for the class 'SampleClass1'
obj = SampleClass1(16)print(obj.get_a())Didukung oleh
Mari lihat bagaimana mengimplementasikan kelas di atas menggunakan dekorator @property.
classProperty:def__init__(self, var):## initializing the attribute
self.a = var
@propertydefa(self):return self.__a
## the attribute name and the method name must be same which is used to set the value for the attribute@a.setterdefa(self, var):if var >0and var %2==0:
self.__a = var
else:
self.__a =2Didukung oleh
@property digunakan untuk mendapatkan nilai atribut privat tanpa menggunakan metode getter. Kita harus menempatkan baris @property di depan metode tempat kita mengembalikan variabel privat.
Untuk menetapkan nilai variabel privat, kita menggunakan @method_name.setter di depan metodenya. Kita harus menggunakannya sebagai setter.
Mari uji kelas Property untuk memeriksa apakah dekorator berfungsi dengan baik atau tidak.
## creating an object for the class 'Property'
obj = Property(23)print(obj.a)Didukung oleh
@a.setter akan menetapkan nilai a dengan memeriksa kondisi yang telah kita sebutkan di dalam metode. Cara lain menggunakan property adalah...
classAnotherWay:def__init__(self, var):## calling the set_a() method to set the value 'a' by checking certain conditions
self.set_a(var)## getter method to get the properties using an objectdefget_a(self):return self.__a
## setter method to change the value 'a' using an objectdefset_a(self, var):## condition to check whether var is suitable or notif var >0and var %2==0:
self.__a = var
else:
self.__a =2
a =property(get_a, set_a)Didukung oleh
Teruskan semua metode getter dan setter ke property dan tetapkan ke variabel yang ingin Anda gunakan sebagai atribut kelas.
## creating an object for the 'AnotherWay' class
obj = AnotherWay(28)print(obj.a)Didukung oleh
Jadikan metode setter dan getter sebagai privat untuk menyembunyikannya. Mari lakukan.
classFinalClass:def__init__(self, var):## calling the set_a() method to set the value 'a' by checking certain conditions
self.__set_a(var)## getter method to get the properties using an objectdef__get_a(self):return self.__a
## setter method to change the value 'a' using an objectdef__set_a(self, var):## condition to check whether var is suitable or notif var >0and var %2==0:
self.__a = var
else:
self.__a =2
a =property(__get_a, __set_a)Didukung oleh
Mari periksa apakah ini berfungsi dengan baik atau tidak.
## creating an object for the 'AnotherWay' class
obj = FinalClass(12)print(obj.a)Didukung oleh
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Apa itu Getter dan Setter?
Atribut Privat - Enkapsulasi
Jika Anda belum familiar dengan atribut privat atau metode privat di Python, bacalah artikel DataCamp ini.
Mari lihat bagaimana Anda dapat mengimplementasikan atribut privat di Python.
SampleClass memiliki tiga metode.
__init__:- Digunakan untuk menginisialisasi atribut atau properti dari sebuah kelas.
Anda tidak dapat mengakses variabel privat secara langsung di Python. Itulah mengapa Anda mengimplementasikan metode getter.
Mari lihat bagaimana kelas tersebut bekerja.
Begitulah cara Anda mengimplementasikan atribut privat, getter, dan setter di Python. Proses yang sama diikuti di Java. Mari tulis implementasi yang sama dengan cara yang lebih Pythonic.
Anda tidak memerlukan metode getter atau setter untuk mengakses atau mengubah atribut. Anda dapat mengaksesnya langsung menggunakan nama atribut.
Mari lihat.
Apa perbedaan antara dua kelas di atas.
Mana yang lebih baik digunakan?
Properti
Sekarang, bagaimana jika Anda ingin memiliki beberapa kondisi untuk menetapkan nilai sebuah atribut di SampleClass.
Misalnya, jika nilai yang kita berikan genap dan positif maka kita dapat menetapkannya ke atribut, jika tidak tetapkan nilainya menjadi 2.
Mari implementasikan ini dengan mengubah metode set_a() di SampleClass.
Mari periksa kelasnya dengan membuat sebuah objek.
Mari lihat bagaimana mengimplementasikan kelas di atas menggunakan dekorator @property.
@property digunakan untuk mendapatkan nilai atribut privat tanpa menggunakan metode getter. Kita harus menempatkan baris @property di depan metode tempat kita mengembalikan variabel privat.
Untuk menetapkan nilai variabel privat, kita menggunakan @method_name.setter di depan metodenya. Kita harus menggunakannya sebagai setter.
Mari uji kelas Property untuk memeriksa apakah dekorator berfungsi dengan baik atau tidak.
@a.setter akan menetapkan nilai a dengan memeriksa kondisi yang telah kita sebutkan di dalam metode. Cara lain menggunakan property adalah...
Teruskan semua metode getter dan setter ke property dan tetapkan ke variabel yang ingin Anda gunakan sebagai atribut kelas.
Jadikan metode setter dan getter sebagai privat untuk menyembunyikannya. Mari lakukan.
Mari periksa apakah ini berfungsi dengan baik atau tidak.
Kesimpulan
Anda kini telah melihat bagaimana mengimplementasikan enkapsulasi di Python dan perbedaan antara setter, getter, dan property.
Jika Anda baru dalam Python, saya merekomendasikan Anda untuk mengikuti kursus gratis DataCamp Introduction to Python.
Jika Anda memiliki pertanyaan terkait artikel ini, silakan sebutkan di kolom komentar. Selamat ngoding!