Cara menggunakan fungsi __init__ pada python

Cara menggunakan fungsi __init__ pada python

Python termasuk salah satu bahasa pemrograman yang berorientasi objek atau object-oriented programming (OOP) yang berarti semua struktur berputar di sekitar paradigma berorientasi objek.

Di dalam Python ada yang disebut metode ajaib atau dunder dengan ditandai dua garis bawah awalan dan akhiran. Umumnya digunakan untuk kelebihan beban operator.

Ketika kita membahas metode __new__() hal yang sangat penting juga untuk dibahas adalah mengenai metode __init__.()

Adapun kegunaan __new__ () untuk mengontrol pembuatan instance baru. Sementara kegunaan __init__()untuk mengontrol inisialisasi instance baru.

Metode __new__() adalah langkah pertama dalam membuat instance. Itu dipanggil terlebih dahulu dan bertanggung jawab untuk mengembalikan instance baru dari class.

Sebaliknya, metode __init__ () tidak mengembalikan apa pun; ia hanya bertanggung jawab untuk menginisialisasi instance setelah dibuat.

Defenisi __new__() adalah object class dari metode statis yang harus melewati parameter cls. cls mewakili class yang perlu dibuat instance-nya, sedangkan kompiler akan secara otomatis menyediakan parameter ini ketika membuat instance.

Metode __new__() dapat membuat instance di dalamnya, baik menggunakan fungsi super() atau pun langsung memanggil __new__() melalui object.

Syntax

class nama_class:(Object)
    def __new__(cls, *args, **kwargs):
        statements
        .
        .
        return super(class_name, cls).__new__(cls, *args, **kwargs)

Sebelum memulainya, ada baiknya terlebih dahulu memahami Class dan Object Python dan Fungsi Pada Python.

Perhatikan contoh mengubah pecahan campuran menjadi pecahan biasa di bawah!

from fractions import Fraction
class Pecahan(Fraction):
    def __new__(cls, integers, num, dem):
          return super().__new__(cls, integers*dem + num, dem)

x = Pecahan(2 , 3, 5)
print(x)

Hasil

Pada contoh di atas, __new__ () class ” Pecahan ” menerima object dari (Fraction) dan mengembalikan . Sedangkan X adalah instance dari tipe bawaan.

Periksa apakah object (Fraction) yang merupakan instance dari sebuah class sudah benar?

print(isinstance(x, Fraction))

Hasil

Kita tidak dapat melakukan cara di atas dengan metode __init__,() Ini akan memberikan kesalahan seperti di bawah ini.

from fractions import Fraction
class Pecahan(Fraction):
    def __init__(self, integers, num, dem):
          super().__init__(integers*dem + num, dem)

x = Pecahan(2, 3, 5)
print(x)

Hasil

TypeError: __new__() takes from 1 to 3 positional arguments but 4 were given

Sekarang, mari kita coba mengubah pecahan campuran (positif & negatif) menjadi pecahan biasa dengan menggunakan metode __new__() dan __init__.()

class Pecahan:
    def __new__(cls, a, b, c):
        if a > 0:
            return Positif( a, b, c)
        else:
            return Negatif( a, b, c) 

class Positif:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c
     
    def pecahan(self):
        a = self.a*self.c + self.b
        return ("{}/{}".format(a, self.c))

class Negatif:
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c
    
    def pecahan(self):
        a = -(self.a*self.c) + self.b
        return ("{}/{}".format(-a, self.c))
    
a = Pecahan(2, 5, 9)
b = Pecahan(-3, 7, 12)

print(str(a.__class__))
print(a.pecahan())
 
print(str(b.__class__))
print(b.pecahan())

Hasil

<class '__main__.Positif'>
23/9
<class '__main__.Negatif'>
-43/12

Nah, dalam tindakan __new__() di atas hanya digunakan untuk membuat suatu keputusan sesuai dengan kondisi percabangan. Sementara __init__() menjalankan fungsinya yakni menginisialisasi variabel di dalam class.

Sampai di sini dulu pembelajaran kali ini. Semoga tutorial ini dapat memberi manfaat. Terima kasih telah mampir di blog saya.

Seseorang yang menyukai bidang ilmu komputer seputar kecerdasan buatan atau AI (Artificial Intelligence)


Python telah menjadi bahasa berorientasi objek sejak bahasa Python sendiri dibuat. Untuk membuat dan menggunakan kelas dan objek pada Python benar-benar mudah. Pada tutorial ini Anda akan dibantu untuk menjadi ahli dalam penggunaan pemrograman berorientasi objek Python.

Jika Anda tidak memiliki pengalaman sebelumnya dengan pemrograman berorientasi objek (OOP), Anda mempelajarinya terlebih dahulu agar Anda dapat memahami konsep dasarnya.

Jika memang sudah mengerti konsep dasar OOP berikut ini adalah pengenalan dari Object-Oriented Programming (OOP) untuk membantu Anda.

Istilah Dalam OOP

IstilahPenjelasan
Class Prototipe yang ditentukan pengguna untuk objek yang mendefinisikan seperangkat atribut yang menjadi ciri objek kelas apa pun. Atribut adalah data anggota (variabel kelas dan variabel contoh) dan metode, diakses melalui notasi titik.
Class variable Sebuah variabel yang dibagi oleh semua contoh kelas. Variabel kelas didefinisikan dalam kelas tapi di luar metode kelas manapun. Variabel kelas tidak digunakan sesering variabel contoh.
Data member Variabel kelas atau variabel contoh yang menyimpan data yang terkait dengan kelas dan objeknya.
Function overloading Penugasan lebih dari satu perilaku ke fungsi tertentu. Operasi yang dilakukan bervariasi menurut jenis objek atau argumen yang terlibat.
Instance variable Variabel yang didefinisikan di dalam sebuah metode dan hanya dimiliki oleh instance kelas saat ini.
Inheritance Pengalihan karakteristik kelas ke kelas lain yang berasal darinya.
Instance Objek individu dari kelas tertentu. Obyek obj yang termasuk dalam Lingkaran kelas, misalnya, adalah turunan dari Lingkaran kelas.
Instantiation Penciptaan sebuah instance dari sebuah kelas.
Method Jenis fungsi khusus yang didefinisikan dalam definisi kelas.
Object Contoh unik dari struktur data yang didefinisikan oleh kelasnya. Objek terdiri dari kedua anggota data (variabel kelas dan variabel contoh) dan metode.
Operator overloading Penugasan lebih dari satu fungsi ke operator tertentu.

Membuat Class Python

Statement class digunakan untuk membuat definisi kelas baru. Nama kelas segera mengikuti kelas kata kunci diikuti oleh titik dua sebagai berikut.

class ClassName: 'Optional class documentation string' class_suite

Dibawah ini adalah contoh cara membuat class dan penggunaanya :

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

Membuat Instance Objects

Untuk membuat instances kelas, Anda memanggil class menggunakan nama class dan meneruskan argumen apa pun yang metode init terima.

This would create first object of Employee class
emp1 = Employee("Zara", 2000)
This would create second object of Employee class
emp2 = Employee("Manni", 5000)

Mengakses Atribut

Anda mengakses atribut objek menggunakan dot operator dengan objek. Variabel kelas akan diakses dengan menggunakan nama kelas sebagai berikut :

emp1.displayEmployee()
emp2.displayEmployee()
print ("Total Employee %d" % Employee.empCount)

Contoh lengkapnya, silahkan lihat kode dibawah ini.

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print ("Total Employee %d" % Employee.empCount)

   def displayEmployee(self):
      print ("Name : ", self.name,  ", Salary: ", self.salary)


#This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
#This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print ("Total Employee %d" % Employee.empCount)

Edit tutorial ini

Apa fungsi __ init __?

__init__ Function Init pada Python digunakan untuk konfigurasi object yang telah di-construct. Pada __init__ function umumnya dilakukan inisialisasi properties, atau melakukan operasi yang harus dilakukan sebelum object dibuat.

Bagaimana penulisan fungsi pada bahasa pemrograman python?

Cara Membuat Fungsi di Bahasa Pemrograman Python. Untuk membuat sebuah fungsi dalam bahasa python harus diawali dengan def kemudian diikuti dengan nama fungsi tersebut. Dalam penulisan nama fungsi dilarang membuat nama fungsi dengan awalan angka dan tidak boleh menggunakan spasi.

Apa fungsi self di python?

Fungsi dari “self” ini sebenarnya adalah sebagai sebuah variabel saja yang yang menyatakan kelas itu sendiri. Nah itu sebabnya..

Apa perbedaan method dan function?

Secara singkat perbedaan antara fungsi dan metode adalah fungsi adalah serangkaian instruksi untuk menjalankan sebuah tugas, sedangkan metode adalah serangkaian instruksi yang berkaitan dengan sebuah object.