การสืบทอด Class (คลาส) จะมี 2 แบบ การสืบทอด Class Inheritance (คลาส อินเฮริแท็น) กับ การสืบทอด Class Inheritance แบบ Multiple (มัลติเปิล)
การเขียนโปรแกรม
python (ไพทอน) แบบ
OOP (โอโอพี) หรือ Object-Oriented (ออบเจ็ค โอเรียนเทด) สามารถทำการสืบทอดความสามารถของ
class ที่สร้างไว้แล้ว (class แม่) มาให้กับ class ที่จะสร้างใหม่ (class ลูก)
รูปแบบการสืบทอด Class Inheritance
class Parent :
- def method_name():
…………………………..
…………………………..
…………………………..
class Child(Parent):
def method_name():
…………………………..
…………………………..
…………………………..
ตัวอย่างรูปแบบการสืบทอด Class Inheritance
เป็นการเรียกใช้คลาส โดยให้ c = child (ไชล์ด)
c.childMethod (ซี.ไชล์ดเมดธอด) เป็นการเรียกใช้เมดธอดของคลาสลูกแล้วทำการปริ้น Calling child constructor (คอลลิ่ง ไชล์ด คอนสตรัคเตอร์)
c.parentMethod (ซี.แพเร็นทเมดธอด) เป็นการเรียกใช้เมดธอดของคลาส parent แล้วทำการปริ้น Calling child method (คอลลิ่ง ไชล์ด เมดธอด)
c.parentMethod2 (ซี.แพเร็นทเมดธอด2) เป็นการเรียกใช้เมดธอด 2 ของคลาส parent (แพเร็นท) แล้วทำการปริ้น Calling parent method2 (คอลลิ่ง แพเร็นท เมดธอด2)
c.setAttr(400) (ซีเก็ทแอคทิบิวต์) กับ c.getAttr (ซีเก็ทแอคทิบิวต์) เป็นการเรียกใช้เมดธอดของคลาส parent โดยกำหนดค่า parentAttr = 400 ก็จะได้ค่าที่กำหนดเข้าไปเป็น ('Parent attribute :', 400)
c.childgetAttr() (ซี.ไชล์ดแอคทิบิวต์) เป็นการเรียกใช้เมดธอดของคลาส parent แล้วทำการปริ้น 'Attr in parent from child', 300 (แอคทิบิวต์ อิน แพเร็นท ฟอร์ม ไชล์ด)
- Inheritance_1.png (87.86 KiB) Viewed 2524 times
การสืบทอด Class Inheritance แบบ Multiple คือคลาสลูกสามารถมีคลาสแม่ได้หลายๆคลาส
รูปแบบการสืบทอด Class Inheritance แบบ Multiple โดยใส่ , คั่นระหว่างคลาสแม่
class ParentA :
- def method_name() :
…………………………..
…………………………..
class ParentB :
def method_name() :
…………………………..
…………………………..
class Child(ParentA, ParentB) :
def method_name() :
…………………………..
…………………………..
ตัวอย่างรูปแบบการสืบทอด Class Inheritance แบบ Multiple
- class_Inheritance_Multiple_1.png (75.99 KiB) Viewed 2524 times
ตัวอย่างการเรียกใช้ Class Inheritance แบบ Multiple
- class_Inheritance_Multiple_class.png (33.45 KiB) Viewed 2524 times
ฟังก์ชันสำหรับดูการสืบทอด Class Inheritance
มีไว้สำหรับดูการสืบทอด
- ฟังก์ชัน issubclass(sub, sup) (อิสซับคลาส) จะคืนค่าเป็น boolean (บลูลีน) เป็นจริงถ้า sub เป็นคลาสลูก
- ฟังก์ชัน isinstance(sub, Class) (อินสแต้นคลาส) จะคืนค่าเป็น boolean ถ้า object (อ๊อบเจค) ที่ต้องการตรวจสอบถูกสร้างมาจาก class (ชื่อคลาส) ซึ่งจะเป็น Class แม่ หรือ Class ลูกก็ได้
ตัวอย่างการใช้งานฟังก์ชัน issubclass
เหมือนเป็นการถามว่า คลาส child เป็นคลาสลูกของคลาส perent หรือป่าว ถ้าเป็นก็จะคืนค่ามาว่าจริงหรือเท็จ ดังภาพ
- issubclass.png (83.04 KiB) Viewed 2524 times
ตัวอย่างการใช้งานฟังก์ชัน instanceเหมือนเป็นการถามว่า c เป็น object ของคลาส child หรือป่าว ถ้าเป็นก็จะคืนค่ามาว่าจริงหรือเท็จ ดังภาพ แต่ในภาพ c เป็น object ของทั้งคลาส child และ คลาส parent เพราะว่าคลาส child สืบทอดมาจากคลาส parent
- instance.png (98.69 KiB) Viewed 2524 times
ศึกษาข้อมูลมาจาก
https://www.youtube.com/watch?v=qDvQ-7qJuoE&t=624s
[b]การสืบทอด Class (คลาส)[/b] จะมี 2 แบบ การสืบทอด Class Inheritance (คลาส อินเฮริแท็น) กับ การสืบทอด Class Inheritance แบบ Multiple (มัลติเปิล)
การเขียนโปรแกรม [url=https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2417-python-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html]python (ไพทอน)[/url] แบบ [url=https://www.mindphp.com/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C/83-python/2893-phthon-oop.html]OOP (โอโอพี) หรือ Object-Oriented (ออบเจ็ค โอเรียนเทด)[/url] สามารถทำการสืบทอดความสามารถของ [url=https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2131-class-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html]class[/url] ที่สร้างไว้แล้ว (class แม่) มาให้กับ class ที่จะสร้างใหม่ (class ลูก)
[b]รูปแบบการสืบทอด Class Inheritance[/b]
class Parent :
[list]def method_name():
…………………………..
…………………………..
…………………………..
class Child(Parent):
def method_name():
…………………………..
…………………………..
…………………………..[/list]
[b]ตัวอย่างรูปแบบการสืบทอด Class Inheritance [/b]
เป็นการเรียกใช้คลาส โดยให้ c = child (ไชล์ด)
c.childMethod (ซี.ไชล์ดเมดธอด) เป็นการเรียกใช้เมดธอดของคลาสลูกแล้วทำการปริ้น Calling child constructor (คอลลิ่ง ไชล์ด คอนสตรัคเตอร์)
c.parentMethod (ซี.แพเร็นทเมดธอด) เป็นการเรียกใช้เมดธอดของคลาส parent แล้วทำการปริ้น Calling child method (คอลลิ่ง ไชล์ด เมดธอด)
c.parentMethod2 (ซี.แพเร็นทเมดธอด2) เป็นการเรียกใช้เมดธอด 2 ของคลาส parent (แพเร็นท) แล้วทำการปริ้น Calling parent method2 (คอลลิ่ง แพเร็นท เมดธอด2)
c.setAttr(400) (ซีเก็ทแอคทิบิวต์) กับ c.getAttr (ซีเก็ทแอคทิบิวต์) เป็นการเรียกใช้เมดธอดของคลาส parent โดยกำหนดค่า parentAttr = 400 ก็จะได้ค่าที่กำหนดเข้าไปเป็น ('Parent attribute :', 400)
c.childgetAttr() (ซี.ไชล์ดแอคทิบิวต์) เป็นการเรียกใช้เมดธอดของคลาส parent แล้วทำการปริ้น 'Attr in parent from child', 300 (แอคทิบิวต์ อิน แพเร็นท ฟอร์ม ไชล์ด)
[attachment=4]Inheritance_1.png[/attachment]
[b]การสืบทอด Class Inheritance แบบ Multiple[/b] คือคลาสลูกสามารถมีคลาสแม่ได้หลายๆคลาส
[b]รูปแบบการสืบทอด Class Inheritance แบบ Multiple [/b]โดยใส่ , คั่นระหว่างคลาสแม่
class ParentA :
[list]def method_name() :
…………………………..
…………………………..
class ParentB :
def method_name() :
…………………………..
…………………………..
class Child(ParentA, ParentB) :
def method_name() :
…………………………..
…………………………..[/list]
[b]ตัวอย่างรูปแบบการสืบทอด Class Inheritance แบบ Multiple[/b]
[attachment=0]class_Inheritance_Multiple_1.png[/attachment]
[b]ตัวอย่างการเรียกใช้ Class Inheritance แบบ Multiple[/b]
[attachment=3]class_Inheritance_Multiple_class.png[/attachment]
[b]ฟังก์ชันสำหรับดูการสืบทอด Class Inheritance[/b]
มีไว้สำหรับดูการสืบทอด
[b]- ฟังก์ชัน issubclass(sub, sup) (อิสซับคลาส)[/b] จะคืนค่าเป็น boolean (บลูลีน) เป็นจริงถ้า sub เป็นคลาสลูก
[b]- ฟังก์ชัน isinstance(sub, Class) (อินสแต้นคลาส)[/b] จะคืนค่าเป็น boolean ถ้า object (อ๊อบเจค) ที่ต้องการตรวจสอบถูกสร้างมาจาก class (ชื่อคลาส) ซึ่งจะเป็น Class แม่ หรือ Class ลูกก็ได้
[b]ตัวอย่างการใช้งานฟังก์ชัน issubclass[/b]
เหมือนเป็นการถามว่า คลาส child เป็นคลาสลูกของคลาส perent หรือป่าว ถ้าเป็นก็จะคืนค่ามาว่าจริงหรือเท็จ ดังภาพ
[attachment=2]issubclass.png[/attachment]
[b]ตัวอย่างการใช้งานฟังก์ชัน instance[/b]เหมือนเป็นการถามว่า c เป็น object ของคลาส child หรือป่าว ถ้าเป็นก็จะคืนค่ามาว่าจริงหรือเท็จ ดังภาพ แต่ในภาพ c เป็น object ของทั้งคลาส child และ คลาส parent เพราะว่าคลาส child สืบทอดมาจากคลาส parent
[attachment=1]instance.png[/attachment]
ศึกษาข้อมูลมาจาก [url]https://www.youtube.com/watch?v=qDvQ-7qJuoE&t=624s[/url]