Warisan Python (Dengan Contoh)

Inheritance 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 warisan dengan Python.

Video: Warisan Python

Warisan dengan Python

Pewarisan adalah fitur hebat dalam pemrograman berorientasi objek.

Ini mengacu pada pendefinisian kelas baru dengan sedikit atau tanpa modifikasi pada kelas yang sudah ada. Kelas baru disebut kelas turunan (atau anak) dan kelas yang diwarisi disebut kelas dasar (atau induk) .

Sintaks Warisan Python

 kelas BaseClass: Tubuh kelas dasar kelas DerivedClass (BaseClass): Tubuh kelas turunan

Kelas turunan mewarisi fitur dari kelas dasar tempat fitur baru dapat ditambahkan ke dalamnya. Hal ini menyebabkan kode dapat digunakan kembali.

Contoh Warisan dengan Python

Untuk mendemonstrasikan penggunaan warisan, mari kita ambil contoh.

Poligon adalah gambar tertutup dengan 3 sisi atau lebih. Katakanlah, kita memiliki kelas yang disebut Polygondidefinisikan 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.

The inputSides()Metode mengambil dalam besarnya masing-masing pihak dan dispSides()menampilkan panjang sisi ini.

Segitiga adalah poligon dengan 3 sisi. Jadi, kita bisa membuat kelas yang disebut Segitiga yang mewarisi dari Polygon. Ini membuat semua atribut kelas Polygon tersedia untuk kelas Segitiga.

Kami tidak perlu mendefinisikannya lagi (kode dapat digunakan kembali). 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 Trianglememiliki metode baru findArea()untuk mencari dan mencetak luas segitiga. Berikut ini contoh prosesnya.

 >>> 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 like inputSides()atau dispSides()untuk kelas Trianglesecara terpisah, kita dapat menggunakannya.

Jika atribut tidak ditemukan di kelas itu sendiri, pencarian dilanjutkan ke kelas dasar. Ini berulang secara berulang, jika kelas dasar itu sendiri diturunkan dari kelas lain.

Metode Mengganti dengan Python

Dalam contoh di atas, perhatikan bahwa __init__()metode telah didefinisikan di kedua kelas, Segitiga serta Poligon. Jika ini terjadi, metode di kelas turunan menimpa metode di kelas dasar. Ini untuk mengatakan, __init__()di Segitiga mendapat preferensi atas __init__di Polygon.

Umumnya saat 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__()dalam Triangle).

Pilihan 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 dalam Python, kunjungi fungsi super () Python.

Dua fungsi bawaan isinstance()dan issubclass()digunakan untuk memeriksa warisan.

Fungsi isinstance()kembali Truejika objek adalah turunan dari kelas atau kelas lain yang diturunkan darinya. Setiap kelas dengan 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 warisan kelas.

 >>> issubclass(Polygon,Triangle) False >>> issubclass(Triangle,Polygon) True >>> issubclass(bool,int) True

Artikel yang menarik...