Inheritance di Python

Inheritance Python

Inheritance memungkinkan kita untuk mendefinisikan kelas yang mewarisi semua metode dan properti dari kelas lain.

Kelas parent adalah kelas yang diwarisi from, also disebut kelas dasar.

Kelas child adalah kelas yang mewarisi dari kelas lain, juga disebut kelas turunan.

Membuat Kelas Parent

Setiap kelas bisa menjadi kelas Parent, jadi sintaksnya sama dengan membuat kelas lain:

Contoh

Buat kelas bernama Person, dengan properti firstname dan lastname, dan juga metode printname:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

#Use the Person class to create an object, and then execute the printname method:

x = Person("John", "Doe")
x.printname()

Membuat Kelas Child

Untuk membuat kelas yang mewarisi fungsi dari kelas lain, menurunkan kelas induk sebagai parameter saat membuat kelas child:

Contoh

Membuat kelas bernama Student, yang akan mewarisi properti dan metode dari kelas Person:

class Student(Person):
  pass

Catatan: Gunakan kata kunci pass  saat kamu tidak ingin menambahkan properti atau metode lain ke dalam kelas.

Sekarang kelas Student memiliki properti dan metode yang sama dengan kelas Person.

Contoh

Gunakan kelas Student untuk membuat objek, dan kemudian jalankan metode printname:

x = Student("Mike", "Olsen")
x.printname()

Tambahkan Fungsi __init __ ()

Sejauh ini kita telah membuat kelas child yang mewarisi properti dan metode dari induknya.

Kita ingin menambahkan fungsi __init__() ke kelas child (bukan dengan kata kunci pass).

Catatan: fungsi __init__() disebut secara otomatis setiap kali kelas sedang digunakan untuk membuat objek baru.

Contoh

Tambahkan fungsi __init__() ke kelas Student:

  def __init__(self, fname, lname):
    #add properties etc.

Saat kamu menambahkan fungsi __init__(), kelas chilc tidak akan lagi mewarisi fungsi parent __init__().

Catatan: fungsi  child __init__()  menimpa inheritance dari fungsi parents __init__().

Untuk menjaga inheritance fungsi parent __init__() , tambahkan panggilan ke fungsi parents __init__():

Contoh

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

Sekarang kita telah berhasil menambahkan fungsi __init __ (), dan mempertahankan inheritance dari kelas parent, dan kita siap untuk menambahkan fungsionalitas dalam fungsi __init__() tersebut.

Menggunakan Fungsi super ()

Python juga memiliki fungsi super()yang akan membuat kelas child mewarisi semua metode dan properti dari induknya:

Contoh

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

Dengan menggunakan fungsi super() Ini, kamu tidak harus menggunakan nama elemen induk, itu akan secara otomatis mewarisi metode dan properti dari induknya.

Menambahkan Properti

Contoh

Menambahkan properti yang dipanggil graduationyear ke kelas Student:

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

Dalam contoh di bawah ini, tahun 2019harus berupa variabel, dan diteruskan ke kelas Student saat membuat objek siswa. Untuk melakukannya, tambahkan parameter lain dalam fungsi __init __ ():

Contoh

Menambahkan parameter year, dan melewati tahun yang benar saat membuat objek:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)

Menambahkan Metode

Contoh

Menambahkan metode welcome yang dipanggil  ke kelas Student:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

Jika kamu menambahkan metode di kelas child dengan nama yang sama dengan fungsi di kelas parent, maka inheritance metode parent akan ditimpa.