Home » python » Python Inheritance: Cara Membuat dan Cotnoh Codenya

Python Inheritance: Cara Membuat dan Cotnoh Codenya

by Catur Kurnia Sari
by Catur Kurnia Sari

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

Kelas induk adalah kelas yang mewarisi, juga disebut kelas dasar.

Kelas anak adalah kelas yang diturunkan dari kelas lain, disebut juga kelas turunan.

Buat Kelas Induk

Setiap kelas bisa menjadi kelas induk, sintaksnya sama dengan membuat kelas pada umumnya.

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

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

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

#Gunakan kelas Person untuk membuat objek, lalu jalankan metode printname:

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

Buat Kelas Turunan

Untuk membuat kelas yang mewarisi fungsionalitas dari kelas lain, kirim kelas induk sebagai parameter saat membuat kelas anak:

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

class Student(Person):
  pass

Catatan: Gunakan kata kunci pass jika Anda tidak ingin menambahkan properti atau metode lain ke kelas.

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

Contoh
Gunakan kelas Student untuk membuat objek, lalu jalankan metode printname

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

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

class Student(Person):
  pass

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

Menambahkan Fungsi init()

Setelah membuat kelas anak yang mewarisi properti dan metode dari induknya.

Maka selanjutnya kita menambahkan fungsi init() ke dalam kelas anak (bukan menggunakan kata kunci pass).

Catatan: Fungsi init() dipanggil secara otomatis setiap kali kelas digunakan untuk membuat objek baru.

Contoh:
Tambahkan fungsi init() ke kelas Student

class Student(Person):
  def __init__(self, fname, lname):
    #tambahkan properti dll.

Ketika kita menambahkan fungsi init(), kelas anak tidak akan lagi mewarisi fungsi init() induknya.

Catatan: Fungsi init() anak menggantikan pewarisan fungsi init() induk.

Untuk mempertahankan warisan fungsi init() induk, tambahkan pemanggil fungsi init() induk.

Contoh:

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

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

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

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

Sekarang kita telah berhasil menambahkan fungsi init(), dan mempertahankan warisan dari kelas induk, dan siap untuk menambahkan fungsionalitas dalam fungsi init().

Menggunakan Fungsi super()

Python juga memiliki fungsi super() yang berfungsi untuk membuat kelas anak mewarisi semua metode dan properti dari induknya

Contoh:

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

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

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

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

Dengan menggunakan fungsi super(), maka kita tidak harus menggunakan nama elemen induk, karena fungsi ini akan secara otomatis mewarisi metode dan properti dari induknya.

Menambahkan Properti

Contoh:
Tambahkan properti bernama graduationyear ke kelas Student

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

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

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

x = Student("Mike", "Olsen")
print(x.graduationyear)

Pada contoh selanjutnya, tahun 2019 harus berupa variabel, dan diteruskan ke kelas Student saat membuat objek student. Untuk melakukannya, tambahkan parameter lain dalam fungsi init().

Contoh:

Tambahkan parameter year, dan teruskan year dengan benar saat membuat objek

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

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

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

x = Student("Mike", "Olsen", 2019)
print(x.graduationyear)

Menambahkan Metode

Contoh:
Tambahkan metode yang disebut welcome di kelas Student

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

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

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

  def welcome(self):
    print("Selamat datang", self.firstname, self.lastname, "dikelas", self.graduationyear)

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

Jika kita menambahkan metode di kelas anak dengan nama yang sama sebagai fungsi di kelas induk, pewarisan metode induk akan diganti.

You may also like