Rumah pembangunan bahagian belakang Tutorial Python Terokai cara melaksanakan pelbagai warisan dalam Python

Terokai cara melaksanakan pelbagai warisan dalam Python

Feb 02, 2024 pm 09:10 PM
python pusaka berbilang Kaedah pelaksanaan

Terokai cara melaksanakan pelbagai warisan dalam Python

Ketahui lebih lanjut tentang cara berbilang warisan dilaksanakan dalam Python

Dalam Python, berbilang warisan ialah ciri berkuasa yang membolehkan kelas mewarisi sifat dan kaedah daripada berbilang kelas induk. Warisan berbilang sangat berguna dalam pengaturcaraan berorientasikan objek dan boleh membantu kami menggunakan semula kod dan mengatur fungsi dengan cekap.

Python menggunakan algoritma C3 untuk menyelesaikan masalah susunan panggilan kaedah dalam pewarisan berbilang Algoritma ini akan mengekalkan keutamaan mendalam kaedah dan mengelakkan konflik antara kelas. Di bawah ini kita akan mempelajari tiga cara untuk melaksanakan berbilang warisan dan menggambarkannya dengan contoh kod khusus.

  1. Cara tradisional
    Cara tradisional merujuk kepada menggunakan berbilang kelas induk yang dipisahkan dengan koma terus dalam pengisytiharan kelas. Berikut ialah contoh mudah:
class Parent1:
    def hello(self):
        print("Hello from Parent1")

class Parent2:
    def hello(self):
        print("Hello from Parent2")

class Child(Parent1, Parent2):
    pass

c = Child()
c.hello()
Salin selepas log masuk

Hasil keluarannya ialah:

Hello from Parent1
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kelas Kanak-kanak mewarisi kaedah helo bagi dua kelas induk, Parent1 dan Parent2. Apabila kaedah hello dipanggil, Python akan mencari kelas induk dari kiri ke kanan dalam susunan warisan, dan kaedah pertama yang memenuhi syarat akan dilaksanakan.

  1. Gunakan fungsi super
    Selain kaedah tradisional, kita juga boleh menggunakan fungsi super untuk melaksanakan pelbagai warisan. Fungsi super secara automatik boleh mencari kaedah yang layak seterusnya dan mengembalikannya ke subkelas untuk dipanggil. Berikut ialah kod sampel:
class Parent1:
    def hello(self):
        print("Hello from Parent1")

class Parent2:
    def hello(self):
        print("Hello from Parent2")

class Child(Parent1, Parent2):
    def hello(self):
        super().hello()  # 调用父类的hello方法

c = Child()
c.hello()
Salin selepas log masuk

Outputnya ialah:

Hello from Parent1
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kelas Kanak-kanak memanggil kaedah hello kelas induk dengan memanggil super().hello(). Fungsi super akan mencari kaedah yang layak bermula dari kelas induk seterusnya kelas semasa.

  1. Gunakan kelas Mixin
    Kelas Mixin ialah kelas khas, yang digunakan terutamanya untuk menyimpan atribut dan kaedah yang dikongsi serta boleh diwarisi oleh berbilang kelas. Kelas Mixin biasanya tidak mengandungi kaedah permulaan, hanya beberapa fungsi tertentu. Berikut ialah contoh:
class Mixin1:
    def hello(self):
        print("Hello from Mixin1")

class Mixin2:
    def hello(self):
        print("Hello from Mixin2")

class Child(Mixin1, Mixin2):
    pass

c = Child()
c.hello()
Salin selepas log masuk

Outputnya ialah:

Hello from Mixin1
Salin selepas log masuk

Dalam contoh ini, kelas Kanak-kanak mewarisi dua kelas Mixin Mixin1 dan Mixin2, yang menyediakan kaedah helo. Apabila kaedah hello dipanggil, Python akan mencari kelas Mixin dari kiri ke kanan dalam susunan warisan, dan kaedah pertama yang memenuhi syarat akan dilaksanakan.

Membandingkan ketiga-tiga kaedah pelaksanaan ini, kaedah tradisional adalah mudah dan langsung, tetapi terdedah kepada konflik kaedah menggunakan fungsi super boleh mengelakkan konflik kaedah, tetapi boleh mengubah logik panggilan asal menggunakan kelas Mixin boleh mencapai penggunaan semula kod, tetapi memerlukan Beri perhatian kepada susunan warisan kelas Mixin.

Perlu diingatkan bahawa dalam pembangunan sebenar, pewarisan berbilang harus digunakan dengan berhati-hati, terutamanya apabila terdapat konflik kaedah antara kelas induk. Mewarisi kelas induk dengan betul dan memanfaatkan banyak ciri yang diwarisi boleh menjadikan kod lebih ringkas, fleksibel dan cekap.

Ringkasan
Dalam artikel ini, kami melihat secara mendalam cara pewarisan berbilang dilaksanakan dalam Python. Melalui kaedah tradisional, menggunakan fungsi super dan menggunakan kelas Mixin, kita boleh memilih cara yang sesuai untuk mewarisi berbilang kelas induk mengikut keperluan yang berbeza. Kaedah pelaksanaan ini memberi kami fleksibiliti dan membantu kami mengatur kod dan melaksanakan fungsi dengan cekap. Apabila menggunakan berbilang warisan, anda perlu memberi perhatian kepada susunan kaedah panggilan dan kemungkinan konflik untuk memastikan ketepatan dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Terokai cara melaksanakan pelbagai warisan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Apr 01, 2025 pm 11:15 PM

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bolehkah anotasi parameter Python menggunakan rentetan? Bolehkah anotasi parameter Python menggunakan rentetan? Apr 01, 2025 pm 08:39 PM

Penggunaan alternatif anotasi parameter python Dalam pengaturcaraan Python, anotasi parameter adalah fungsi yang sangat berguna yang dapat membantu pemaju memahami dan menggunakan fungsi ...

Bagaimanakah skrip Python jelas output ke kedudukan kursor di lokasi tertentu? Bagaimanakah skrip Python jelas output ke kedudukan kursor di lokasi tertentu? Apr 01, 2025 pm 11:30 PM

Bagaimanakah skrip Python jelas output ke kedudukan kursor di lokasi tertentu? Semasa menulis skrip python, adalah perkara biasa untuk membersihkan output sebelumnya ke kedudukan kursor ...

Mengapa kod saya tidak dapat mendapatkan data yang dikembalikan oleh API? Bagaimana menyelesaikan masalah ini? Mengapa kod saya tidak dapat mendapatkan data yang dikembalikan oleh API? Bagaimana menyelesaikan masalah ini? Apr 01, 2025 pm 08:09 PM

Mengapa kod saya tidak dapat mendapatkan data yang dikembalikan oleh API? Dalam pengaturcaraan, kita sering menghadapi masalah mengembalikan nilai null apabila panggilan API, yang bukan sahaja mengelirukan ...

Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Apr 01, 2025 pm 10:51 PM

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Bagaimana secara dinamik membuat objek melalui rentetan dan panggil kaedahnya dalam Python? Bagaimana secara dinamik membuat objek melalui rentetan dan panggil kaedahnya dalam Python? Apr 01, 2025 pm 11:18 PM

Di Python, bagaimana untuk membuat objek secara dinamik melalui rentetan dan panggil kaedahnya? Ini adalah keperluan pengaturcaraan yang biasa, terutamanya jika perlu dikonfigurasikan atau dijalankan ...

Bagaimana untuk menggunakan Go atau Rust untuk memanggil skrip Python untuk mencapai pelaksanaan selari yang benar? Bagaimana untuk menggunakan Go atau Rust untuk memanggil skrip Python untuk mencapai pelaksanaan selari yang benar? Apr 01, 2025 pm 11:39 PM

Bagaimana untuk menggunakan Go atau Rust untuk memanggil skrip Python untuk mencapai pelaksanaan selari yang benar? Baru -baru ini saya telah menggunakan python ...

Di mana untuk memuat turun fail python .whl di bawah tingkap? Di mana untuk memuat turun fail python .whl di bawah tingkap? Apr 01, 2025 pm 08:18 PM

Kaedah muat turun Perpustakaan Python (.whl) Meneroka kesukaran banyak pemaju Python apabila memasang perpustakaan tertentu pada sistem Windows. Penyelesaian yang sama ...

See all articles