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.