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 2019
harus 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.