Inheritance atau pewarisan memungkinkan kita untuk mendefinisikan class yang mewarisi semua fungsi dan properti dari class lain.
Class induk adalah class yang diwarisi, juga disebut class dasar.
Class anak adalah class yang mewarisi dari class lain, disebut juga class turunan.
Membuat Class Induk
Class apa pun bisa menjadi class induk, jadi sintaksnya sama dengan membuat class lain.
Contoh:
Buat class bernama Manusia
, dengan properti namadepan
dan namabelakang
, dan fungsi printname
.
class Manusia:
def __init__(self, namad, namab):
self.namadepan = namad
self.namabelakang = namab
def printname(self):
print(self.namadepan, self.namabelakang)
#Gunakan kelas Manusia untuk membuat object, lalu jalankan metode printname:
x = Manusia("Asep", "Aja")
x.printname()
Output:
Asep Aja
Membuat Class Anak
Untuk membuat class yang mewarisi fungsionalitas dari class lain, kirimkan class induk sebagai parameter saat membuat class anak.
Contoh:
Buat class bernama Murid
, yang akan mewarisi properti dan fungsi dari class Manusia
.
class Murid(Manusia):
pass
Catatan: Gunakan kata kunci pass
saat Anda tidak ingin menambahkan properti atau fungsi lain ke class.
Sekarang class Murid memiliki properti dan fungsi yang sama dengan class Manusia.
Contoh:
Gunakan class Murid
untuk membuat object, lalu jalankan fungsi printname
.
class Manusia:
def __init__(self, namad, namab):
self.namadepan = namad
self.namabelakang = namab
def printname(self):
print(self.namadepan, self.namabelakang)
class Murid(Manusia):
pass
x = Murid("Anya", "Geraldine")
x.printname()
Output:
Anya Geraldine
Tambahkan Fungsi __init__()
Sejauh ini kita telah membuat class anak yang mewarisi properti dan fungsi dari induknya.
Sekarang kita ingin menambahkan fungsi __init__()
ke class anak (bukan kata kunci pass
).
Catatan: Fungsi __init__()
dipanggil secara otomatis setiap kali class digunakan untuk membuat object baru.
Contoh:
Tambahkan __init__()
fungsi ke class Murid
.
class Murid(Manusia):
def __init__(self, namad, namab):
#menambahkan properti dll.
Saat Anda menambahkan fungsi __init__()
, class anak tidak akan lagi mewarisi fungsi induk __init__()
.
Catatan: Fungsi __init__()
anak mengesampingkan pewarisan fungsi induk __init__()
.
Untuk menjaga pewarisan fungsi induk __init__()
, tambahkan panggilan ke fungsi induk __init__()
.
Contoh:
class Manusia:
def __init__(self, namad, namab):
self.namadepan = namad
self.namabelakang = namab
def printname(self):
print(self.namadepan, self.namabelakang)
class Murid(Manusia):
def __init__(self, namad, namab):
Manusia.__init__(self, namad, namab)
x = Murid("Anya", "Geraldine")
x.printname()
Output:
Anya Geraldine
Sekarang kita telah berhasil menambahkan fungsi __init__(), dan mempertahankan warisan fungsi tersebut dari class induk, dan kita siap untuk menambahkan fungsionalitas dalam fungsi tersebut __init__()
.
Menggunakan Fungsi super()
Python juga memiliki fungsi super()
yang akan membuat class turunan mewarisi semua fungsi dan properti dari induknya.
Contoh:
class Manusia:
def __init__(self, namad, namab):
self.namadepan = namad
self.namabelakang = namab
def printname(self):
print(self.namadepan, self.namabelakang)
class Murid(Manusia):
def __init__(self, namad, namab):
super().__init__(namad, namab)
x = Murid("Anya", "Geraldine")
x.printname()
Output:
Anya Geraldine
Dengan menggunakan fungsi super()
, Anda tidak harus menggunakan nama elemen induk, karena secara otomatis akan mewarisi fungsi dan properti dari induknya.
Menambahkan Properti
Contoh:
Tambahkan properti tahunkelulusan
ke class Murid
.
class Manusia:
def __init__(self, namad, namab):
self.namadepan = namad
self.namabelakang = namab
def printname(self):
print(self.namadepan, self.namabelakang)
class Murid(Manusia):
def __init__(self, namad, namab):
super().__init__(namad, namab)
self.tahunkelulusan = 2019
x = Murid("Anya", "Geraldine")
print(x.tahunkelulusan)
Output:
2019
Pada contoh di bawah, tahun 2019
harus berupa variabel, dan diteruskan ke class Murid
saat membuat object murid. Untuk melakukannya, tambahkan parameter lain di fungsi __init__().
Contoh:
Tambahkan parameter tahun
, dan berikan tahun yang benar saat membuat object.
class Manusia:
def __init__(self, namad, namab):
self.namadepan = namad
self.namabelakang = namab
def printname(self):
print(self.namadepan, self.namabelakang)
class Murid(Manusia):
def __init__(self, namad, namab, tahun):
super().__init__(namad, namab)
self.tahunkelulusan = tahun
x = Murid("Anya", "Geraldine", 2019)
print(x.tahunkelulusan)
Output:
2019
Menambahkan Fungsi
Contoh:
Tambahkan fungsi penyambutan
ke class Murid
.
class Manusia:
def __init__(self, namad, namab):
self.namadepan = namad
self.namabelakang = namab
def printname(self):
print(self.namadepan, self.namabelakang)
class Murid(Manusia):
def __init__(self, namad, namab, tahun):
super().__init__(namad, namab)
self.tahunkelulusan = tahun
def penyambutan(self):
print("Selamat Datang", self.namadepan, self.namabelakang, "ke kelas dari", self.tahunkelulusan)
x = Murid("Anya", "Geraldine", 2019)
x.penyambutan()
Output:
Selamat Datang Anya Geraldine ke kelas dari 2019
Jika Anda menambahkan fungsi di class anak dengan nama yang sama dengan fungsi di class induk, pewarisan fungsi induk akan diganti.
Tutorial sebelumnya : Python Class dan Python Object
Tutorial setelahnya : Python Iterator
Semua Tutorial Python : Tutorial Python