Python
Warisan memungkinkan kita untuk mendefinisikan kelas yang mengambil semua fungsionalitas dari kelas induk dan memungkinkan kita untuk menambahkan lebih banyak. Dalam tutorial ini, Anda akan belajar menggunakan pewarisan dengan Python.
Warisan adalah fitur hebat dalam pemrograman berorientasi objek.
Ini mengacu pada mendefinisikan kelas baru dengan sedikit atau tanpa modifikasi ke kelas yang ada. Kelas baru disebut kelas turunan (atau anak) dan yang diwarisinya disebut kelas dasar (atau induk) .
class BaseClass: Body of base class class DerivedClass(BaseClass): Body of derived class
Kelas turunan mewarisi fitur dari kelas dasar tempat fitur baru dapat ditambahkan ke dalamnya. Ini menghasilkan kegunaan kembali kode.
Untuk mendemonstrasikan penggunaan pewarisan, mari kita ambil sebuah contoh.
Poligon adalah bangun datar yang memiliki 3 sisi atau lebih. Katakanlah, kami memiliki kelas yang disebut Polygon
didefinisikan sebagai berikut.
class Polygon:
def __init__(self, no_of_sides):
self.n = no_of_sides
self.sides = [0 for i in range(no_of_sides)]
def inputSides(self):
self.sides = [float(input("Enter side "+str(i+1)+" : ")) for i in range(self.n)]
def dispSides(self):
for i in range(self.n):
print("Side",i+1,"is",self.sides[i])
Kelas ini memiliki atribut data untuk menyimpan jumlah sisi n dan besarnya setiap sisi sebagai daftar yang disebut sisi .
inputSides()
metode mengambil besarnya masing-masing sisi dan dispSides()
menampilkan panjang sisi ini.
Segitiga adalah poligon dengan 3 sisi. Jadi, kita bisa membuat kelas bernama Segitiga yang mewarisi dari Poligon . Ini membuat semua atribut Poligon kelas tersedia untuk Segitiga kelas.
Kami tidak perlu mendefinisikannya lagi (penggunaan kembali kode). Segitiga dapat didefinisikan sebagai berikut.
class Triangle(Polygon):
def __init__(self):
Polygon.__init__(self,3)
def findArea(self):
a, b, c = self.sides
# calculate the semi-perimeter
s = (a + b + c) / 2
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print('The area of the triangle is %0.2f' %area)
Namun, kelas Triangle
memiliki metode baru findArea()
untuk mencari dan mencetak luas segitiga. Berikut adalah contoh lari.
>>> t = Triangle()
>>> t.inputSides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4
>>> t.dispSides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0
>>> t.findArea()
The area of the triangle is 6.00
Kita dapat melihat bahwa meskipun kita tidak mendefinisikan metode seperti inputSides()
atau dispSides()
untuk kelas Triangle
secara terpisah, kami dapat menggunakannya.
Jika atribut tidak ditemukan di kelas itu sendiri, pencarian dilanjutkan ke kelas dasar. Ini berulang secara rekursif, jika kelas dasar itu sendiri diturunkan dari kelas lain.
Pada contoh di atas, perhatikan bahwa __init__()
metode didefinisikan di kedua kelas, Segitiga juga Poligon . Ketika ini terjadi, metode di kelas turunan menimpanya di kelas dasar. Artinya, __init__()
di Segitiga mendapat preferensi atas __init__
di Poligon .
Umumnya ketika mengganti metode dasar, kami cenderung memperluas definisi daripada hanya menggantinya. Hal yang sama dilakukan dengan memanggil metode di kelas dasar dari yang ada di kelas turunan (memanggil Polygon.__init__()
dari __init__()
di Triangle
).
Opsi yang lebih baik adalah menggunakan fungsi bawaan super()
. Jadi, super().__init__(3)
setara dengan Polygon.__init__(self,3)
dan lebih disukai. Untuk mempelajari lebih lanjut tentang super()
fungsi di Python, kunjungi fungsi Python super().
Dua fungsi bawaan isinstance()
dan issubclass()
digunakan untuk memeriksa warisan.
Fungsi isinstance()
mengembalikan True
jika objek adalah turunan dari kelas atau kelas lain yang diturunkan darinya. Setiap kelas dalam Python mewarisi dari kelas dasar object
.
>>> isinstance(t,Triangle)
True
>>> isinstance(t,Polygon)
True
>>> isinstance(t,int)
False
>>> isinstance(t,object)
True
Demikian pula, issubclass()
digunakan untuk memeriksa pewarisan kelas.
>>> issubclass(Polygon,Triangle)
False
>>> issubclass(Triangle,Polygon)
True
>>> issubclass(bool,int)
True
Python
OOP dengan Python OOP dengan Python adalah pendekatan pemrograman yang berfokus pada penggunaan objek dan kelas yang sama dengan bahasa pemrograman umum lainnya. Objek dapat berupa entitas dunia nyata apa pun. Python memungkinkan pengembang untuk mengembangkan aplikasi menggunakan pendekatan OOP de
Slot kelas Python adalah fitur yang tidak banyak diketahui oleh programmer. Di kelas slotted, kami secara eksplisit mendefinisikan bidang yang diizinkan untuk dimiliki oleh kelas kami menggunakan nama bidang ajaib __slots__ . Ini memiliki beberapa keuntungan: Objek yang dibuat dari kelas akan memak
Kelas data Python adalah kelas Python biasa yang memiliki @dataclass penghias. Ini khusus dibuat untuk menyimpan data. Sejak Python versi 3.7, Python menawarkan kelas data melalui modul bawaan yang disebut dataclass . Ada beberapa keunggulan dibandingkan kelas Python biasa yang akan kita jelajahi di
Warisan dapat didefinisikan sebagai proses di mana satu kelas memperoleh properti (metode dan bidang) dari yang lain. Dengan menggunakan pewarisan, informasi dibuat dapat dikelola dalam urutan hierarkis. Kelas yang mewarisi sifat-sifat orang lain dikenal sebagai subkelas (kelas turunan, kelas anak)