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

เราจะขยายคลาส Python หลายคลาสในการสืบทอดได้อย่างไร


ตามเอกสารของ Python 'super' สามารถช่วยในการขยายคลาส python หลายตัวในการสืบทอด ส่งคืนวัตถุพร็อกซีที่มอบหมายการเรียกเมธอดไปยังคลาสพาเรนต์หรือพี่น้องประเภท สิ่งนี้มีประโยชน์สำหรับการเข้าถึงเมธอดที่สืบทอดมาซึ่งถูกแทนที่ในคลาส ลำดับการค้นหาเหมือนกับที่ใช้โดย getattr() เว้นแต่ว่าประเภทนั้นจะถูกข้ามไป

กล่าวอีกนัยหนึ่งการเรียก super จะส่งคืนวัตถุปลอมซึ่งมอบหมายการค้นหาแอตทริบิวต์ไปยังคลาสที่อยู่เหนือคุณในสายการสืบทอด ข้อสังเกต:

สิ่งนี้ใช้ไม่ได้กับคลาสแบบเก่า คุณต้องส่งคลาสและอินสแตนซ์ของคุณเองไปยัง super ใน Python 2.x ข้อกำหนดนี้ได้รับการยกเว้นใน 3.x.

สิ่งนี้จะจัดการการสืบทอดหลายรายการทั้งหมดอย่างถูกต้อง มีการสร้างลำดับการแก้ไขเมธอดและการค้นหาผ่านคลาสพาเรนต์ตามลำดับนี้