Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Memanggil Kaedah `__init__` Kelas Induk dengan Betul dalam Pewarisan Berbilang?

Bagaimanakah Saya Memanggil Kaedah `__init__` Kelas Induk dengan Betul dalam Pewarisan Berbilang?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-01 05:36:10457semak imbas

How Do I Properly Call Parent Class `__init__` Methods in Multiple Inheritance?

Memanggil Kelas Induk init dengan Berbilang Warisan

Dalam senario di mana berbilang warisan digunakan, adalah penting untuk memastikan bahawa semua pembina kelas induk dipanggil. Dua pendekatan biasa ialah:

  • ParentClass.__init__(self) (gaya lama)
  • super(DerivedClass, self).__init__() (gaya baru)

Namun, jika ibu bapa kelas tidak mengikut konvensyen yang konsisten, pendekatan ini mungkin gagal.

Menentukan Pendekatan yang Betul

Pendekatan yang sesuai bergantung pada sama ada kelas asas direka bentuk untuk pewarisan berbilang:

1. Kelas Asas Kendiri

  • Tidak direka bentuk untuk berbilang warisan.
  • Panggil setiap pembina induk secara manual menggunakan sama ada:

    • Tanpa super: Foo.__init__(self), Bar.__init__(self)
    • Dengan super: super().__init__() (untuk semua pembina sehingga Foo), super(Foo, self).__init__(bar) (untuk semua pembina selepas Foo)

2. Mixins

  • Direka bentuk untuk berbilang warisan.
  • Gunakan super().__init__() dalam kelas mixin, yang secara automatik memanggil pembina seterusnya.
  • Warisi daripada mixin dahulu, cth., kelas FooBar(FooMixin, Bar).

3. Kelas Direka untuk Warisan Koperasi

  • Serupa dengan mixin, tetapi semua hujah dihantar sebagai hujah kata kunci.
  • Panggil super().__init__() dalam semua kelas.
  • Tempahan kelas asas tidak perkara.

Pertimbangan Tambahan

  • Untuk subkelas objek, elakkan memanggil super().__init__().
  • Untuk kendiri kelas, sentiasa sediakan pembina kosong jika mewarisi secara langsung daripada objek (cth., kelas Base(objek): def __init__(self): lulus).

Akhirnya, pelaksanaan yang betul bergantung pada kelas yang terlibat. Jika kelas direka untuk berbilang warisan, ia harus didokumenkan dengan sewajarnya. Jika tidak, anggap ia tidak direka untuk senario sedemikian.

Atas ialah kandungan terperinci Bagaimanakah Saya Memanggil Kaedah `__init__` Kelas Induk dengan Betul dalam Pewarisan Berbilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn