Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Menguasai Warisan Python: Konsep, Sintaks, dan Contoh Praktis

Python Inheritance

Warisan memungkinkan Anda membuat kelas baru yang mewarisi semua fungsionalitas dari kelas induk sambil menambah atau memperluas fitur. Tutorial ini menjelaskan cara menggunakan warisan di Python, dengan contoh yang jelas dan panduan praktik terbaik.

Video: Python Inheritance

Inheritance in Python

Warisan adalah prinsip inti pemrograman berorientasi objek yang mempromosikan penggunaan kembali kode dan hierarki logis. Sebuah kelas baru (kelas derived atau child) didefinisikan dengan perubahan minimal atau tanpa perubahan pada kelas yang sudah ada (kelas base atau parent). Kelas anak secara otomatis menerima atribut dan metode dari orang tuanya, yang kemudian dapat dioverride atau diperluas sesuai kebutuhan.


Python Inheritance Syntax

class BaseClass:
    # body of base class
class DerivedClass(BaseClass):
    # body of derived class

Dalam cuplikan di atas, DerivedClass mewarisi semua anggota publik dari BaseClass. Dengan menambahkan metode baru atau mengganti yang ada, kelas derived dapat menyesuaikan perilaku sambil menggunakan kembali implementasi dasar.


Contoh Inheritance di Python

Mari kita ilusrasikan warisan dengan contoh praktis. Misalkan kita memiliki kelas Polygon generik yang menyimpan jumlah sisi dan panjangnya:

class Polygon:
    def __init__(self, no_of_sides):
        self.n = no_of_sides
        self.sides = [0 for _ in range(no_of_sides)]
    def input_sides(self):
        self.sides = [float(input(f"Enter side {i+1} : ")) for i in range(self.n)]
    def display_sides(self):
        for i, side in enumerate(self.sides, 1):
            print(f"Side {i} is {side}")

Kelas Polygon mengenkapsulasi atribut dan metode umum untuk setiap poligon. Sebuah Triangle adalah poligon spesifik dengan tepat tiga sisi, jadi ia dapat mewarisi dari Polygon tanpa mendefinisikan ulang logika bersama:

class Triangle(Polygon):
    def __init__(self):
        super().__init__(3) # initialize base with 3 sides
    def find_area(self):
        a, b, c = self.sides
        s = (a + b + c) / 2
        area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
        print(f"The area of the triangle is {area:.2f}")

Menjalankan yang berikut menunjukkan warisan dalam aksi:

>>> t = Triangle()
>>> t.input_sides()
Enter side 1 : 3
Enter side 2 : 5
Enter side 3 : 4
>>> t.display_sides()
Side 1 is 3.0
Side 2 is 5.0
Side 3 is 4.0
>>> t.find_area()
The area of the triangle is 6.00

Perhatikan bahwa Triangle dapat memanggil input_sides() dan display_sides() meskipun ia tidak mendefinisikannya—warisan membuat metode ini tersedia secara otomatis.

Jika atribut atau metode tidak ditemukan dalam kelas anak, Python mencari kelas induk, dan pencarian ini berlanjut ke atas rantai warisan jika diperlukan.


Method Overriding in Python

Kedua Polygon dan Triangle mendefinisikan metode __init__. Implementasi anak mengganti yang di atas, tetapi dapat (dan harus) memperluas logika dasar dengan memanggilnya secara eksplisit. Penggunaan super() adalah pendekatan modern dan yang disarankan:

class Triangle(Polygon):
    def __init__(self):
        super().__init__(3) # calls Polygon.__init__

Saat mengganti, metode anak dapat menambahkan perilaku baru atau memodifikasi perilaku dasar sambil mempertahankan fungsionalitas asli.

Python menyediakan isinstance() dan issubclass() untuk memeriksa hubungan warisan:

t = Triangle()
print(isinstance(t, Triangle)) # True
print(isinstance(t, Polygon)) # True
print(isinstance(t, int)) # False
print(isinstance(t, object)) # True
print(issubclass(Polygon, Triangle)) # False
print(issubclass(Triangle, Polygon)) # True
print(issubclass(bool, int)) # True

Utilitas ini penting untuk pemeriksaan tipe dan memastikan objek sesuai dengan antarmuka yang diharapkan.

Untuk lebih lanjut tentang super(), lihat dokumentasi Python super() function.

Python

  1. Menguasai Tipe Data Python: Panduan Praktis
  2. Menguasai Operator Python: Panduan Komprehensif
  3. Menguasai Pernyataan Pass Python: Panduan Praktis
  4. Menguasai Kamus Python: Pembuatan, Manipulasi, dan Teknik Lanjutan
  5. Menguasai Exception Kustom Python: Panduan Praktis
  6. Menguasai Pemrograman Berorientasi Objek Python: Kelas, Warisan, Enkapsulasi & Polimorfisme
  7. Menguasai Operator Overloading di Python: Panduan Praktis
  8. Menguasai Decorator @property Python: Getter dan Setter Bersih & Kompatibel Mundur
  9. Memahami type() dan isinstance() dalam Python: Contoh Praktis
  10. Menguasai Pewarisan C#: Membangun Kode yang Dapat Digunakan Lagi dan Dapat Diperbarui