Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีสืบทอดหลายคลาสใน Python (Multiple Inheritance)

ตามเอกสาร Python ฟังก์ชัน super() ช่วยให้สามารถขยายคลาสหลายคลาสในการสืบทอดได้ มันคืนค่า Proxy Object ที่มอบหมายการเรียกเมธอดให้คลาสผู้มา (Parent) หรือคลาสพี่น้อง (Sibling) ประโยชน์สำหรับการเข้าถึงเมธอดที่ถูก Override ในคลาสลูก ลำดับการค้นหาเหมือนกับ getattr() แต่ข้ามตัวคลาสเองไป

กล่าวคือ การเรียก super() จะคืน "ออบเจ็กต์ปลอม" ที่มอบหมายการค้นหาแอตทริบิวต์ให้คลาสที่อยู่เหนือในโซ่การสืบทอด

ข้อสังเกตสำคัญ:

  • ไม่ทำงานกับ Old-style Classes (Python 2)
  • Python 2.x ต้องส่งคลาสตัวเองและอินสแตนซ์ให้ super() แต่ Python 3.x ไม่ต้องส่งแล้ว
  • จัดการ Multiple Inheritance ได้ถูกต้อง โดยสร้าง Method Resolution Order (MRO) และค้นหาตามลำดับนั้น