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

Warisan Python

Warisan 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.

Video:Warisan Python

Warisan 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) .


Sintaks Warisan Python

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.


Contoh Warisan dengan Python

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.


Penggantian Metode dengan Python

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

  1. Tipe Data Python
  2. Operator Python
  3. Pernyataan lulus python
  4. Kamus Python
  5. Pengecualian Kustom Python
  6. Pemrograman Berorientasi Objek Python
  7. Kelebihan Operator Python
  8. Python @dekorator properti
  9. type() dan isinstance() dengan Python dengan Contoh
  10. C# - Warisan