Python Academy · Pelajaran

Pewarisan Tunggal

Cipta kelas anak yang mewarisi atribut dan kaedah daripada kelas induk.

Pelajaran 1 daripada 414 langkah

Pewarisan Tunggal ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Pengenalan

Pewarisan membolehkan kelas anak menggunakan semula dan melanjutkan tingkah laku kelas induk tanpa menduplikasi kod.

Mentakrifkan Kelas Anak

class Dog(Animal): mewarisi segala-galanya daripada Animal. Kelas anak boleh menambah kaedah baharu atau mengatasi kaedah sedia ada.
class Animal:
    def __init__(self, name): self.name = name
    def speak(self): return '...'
class Dog(Animal):
    def speak(self): return 'Woof'
d = Dog('Rex')
print(d.name, d.speak())

Memanggil super().__init__

super().__init__(args) memanggil __init__ kelas induk. Sentiasa panggilnya dalam kelas anak apabila kelas induk mempunyai logik persediaan.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed
d = Dog('Rex', 'Labrador')
print(d.name, d.breed)

Mewarisi Kaedah

Kelas anak mewarisi semua kaedah kelas induk. Jika anda tidak mengatasinya, kaedah tersebut berfungsi tanpa perubahan.
class Vehicle:
    def start(self): return 'starting'
class Car(Vehicle):
    pass
print(Car().start())

Mengatasi Kaedah

Takrifkan nama kaedah yang sama dalam kelas anak untuk menggantikan versi kelas induk. Versi kelas anak akan dipanggil.
class Shape:
    def area(self): return 0
class Square(Shape):
    def __init__(self, s): self.s = s
    def area(self): return self.s**2
print(Square(4).area())

Melanjutkan Tingkah Laku Kelas Induk

Panggil super().method() di dalam kaedah yang diatasi untuk menjalankan versi kelas induk terlebih dahulu, kemudian menambah tingkah laku lain.
class Animal:
    def describe(self): return 'I am an animal'
class Dog(Animal):
    def describe(self): return super().describe() + ' and a dog'
print(Dog().describe())

isinstance() dan issubclass()

isinstance(obj, Parent) mengembalikan True untuk instans kelas anak juga. issubclass(Child, Parent) menyemak hierarki kelas.
class Animal: pass
class Dog(Animal): pass
d = Dog()
print(isinstance(d, Animal))
print(issubclass(Dog, Animal))

Kelas Anak Menambah Kaedah Baharu

Kelas anak boleh mentakrifkan kaedah baharu sepenuhnya yang tidak dimiliki oleh kelas induk.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def fetch(self): return f'{self.name} fetches!'
print(Dog('Rex').fetch())

Atribut Terlindung

Konvensyen _name menandakan 'jangan akses dari luar kelas'. Subkelas CAN menggunakannya.
class Animal:
    def __init__(self, name): self._name = name
    def name(self): return self._name
class Dog(Animal):
    def bark(self): return f'{self._name} barks'
print(Dog('Rex').bark())

Kelas Asas Abstrak

from abc import ABC, abstractmethod memaksa subkelas untuk melaksanakan kaedah.
from abc import ABC, abstractmethod
class Shape(ABC):
    @abstractmethod
    def area(self): pass
class Circle(Shape):
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(3).area())

__bases__ dan __mro__

Dog.__bases__ memaparkan kelas induk langsung. Dog.__mro__ memaparkan urutan penyelesaian kaedah penuh.
class A: pass
class B(A): pass
class C(B): pass
print(C.__mro__)

Semakan Pantas

Apakah yang dilakukan oleh super().__init__() dalam kelas anak?

Ulang Kaji

Pewarisan: class Child(Parent). super() mengakses kelas induk. Atasi kaedah untuk mengubah tingkah laku. isinstance() menyemak hierarki. ABC menguatkuasakan kontrak abstrak.

Teruskan

Kemajuan anda cemerlang! Teruskan untuk menguasai konsep seterusnya.
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “Pewarisan Tunggal” percuma?

Ya — teks penuh “Pewarisan Tunggal” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pewarisan Tunggal”?

Cipta kelas anak yang mewarisi atribut dan kaedah daripada kelas induk. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Pewarisan Tunggal” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pewarisan Tunggal
  2. Penggantian Kaedah dan super()
  3. Pewarisan Berbilang dan MRO
  4. Polimorfisme dan Penaipan Itik
← Kembali ke Python Academy