เจาะลึกการเขียนโปรแกรมเชิงวัตถุ Python และ Error Handling
เรียนรู้พื้นฐาน Object-Oriented Programming ใน Python ตั้งแต่การสร้างคลาส 4 เสาหลัก ไปจนถึงการจัดการข้อผิดพลาดด้วย try-except อย่างมีประสิทธิภาพ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การเขียนโปรแกรมเชิงวัตถุ (OOP) ใน Python ช่วยรวมข้อมูล (attributes) และพฤติกรรม (methods) ไว้ด้วยกัน
- 4 เสาหลักของ OOP ได้แก่ Encapsulation, Inheritance, Polymorphism และ Abstraction
- การจัดการข้อผิดพลาดใช้วิธี try, except, else และ finally เพื่อป้องกันโปรแกรมหยุดทำงาน
- ชนิดของข้อผิดพลาดที่พบบ่อยได้แก่ ValueError, TypeError, NameError, IndexError และ FileNotFoundError
การเขียนโปรแกรมเชิงวัตถุหรือ Object-Oriented Programming (OOP) เป็นแนวคิดที่ช่วยจัดระเบียบโค้ดโดยรอบวัตถุ ซึ่งภาษา Python รองรับ OOP มาเป็นพื้นฐาน โดยเกือบทุกอย่างในภาษาไม่ว่าจะเป็นตัวเลขจำนวนเต็ม ข้อความ หรือรายการ ล้วนเป็นวัตถุทั้งสิ้น การใช้งานเครื่องมือสำเร็จรูปทำได้ผ่านคำสั่ง import เช่น โมดูล random สำหรับสุ่มตัวเลข
โครงสร้างพื้นฐานของคลาสประกอบด้วย Attributes ซึ่งเป็นค่าที่เก็บไว้ในวัตถุ และ Methods ซึ่งเป็นฟังก์ชันที่กำหนดไว้ในคลาสเพื่อทำงานกับวัตถุนั้น โดยคลาสเปรียบเสมือนพิมพ์เขียว ส่วนวัตถุหรือ instance คือสิ่งที่สร้างขึ้นมาจากพิมพ์เขียวดังกล่าว เช่น การสร้างคลาส Dog ที่มีฟังก์ชัน __init__ เป็นคอนสตรัคเตอร์ทำงานอัตโนมัติเมื่อสร้างวัตถุ และใช้ self อ้างถึงอินสแตนซ์เฉพาะตัว

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
นอกจากนี้ Attributes ยังแบ่งออกเป็น Class attributes ที่แชร์ร่วมกันทุกอินสแตนซ์ และ Instance attributes ที่เป็นของวัตถุชิ้นนั้นๆ รวมถึงการใช้งาน methods สามประเภท ได้แก่ Instance methods ทำงานกับข้อมูลวัตถุ, Class methods ใช้ cls ทำงานกับตัวคลาสเอง และ Static methods ที่ทำหน้าที่เป็นฟังก์ชันเสริมกลุ่มเดียวกับคลาส
การทำความเข้าใจความแตกต่างระหว่าง self และ cls รวมถึงขอบเขตของ attributes แต่ละประเภท ถือเป็นก้าวสำคัญในการเขียน Python ขั้นสูง เพราะช่วยป้องกันข้อผิดพลาดเรื่องการแชร์ข้อมูลโดยไม่ตั้งใจระหว่างออบเจกต์ในระบบขนาดใหญ่
แนวคิดสำคัญ 4 เสาหลักของ OOP ใน Python ได้แก่:
- Encapsulation: การห่อหุ้มข้อมูลและจำกัดการเข้าถึงสถานะภายใน โดยใช้หลักการตั้งชื่อเช่น _name สำหรับ protected และ __name สำหรับ private
- Inheritance: การสืบทอดคุณสมบัติจากคลาสแม่ (base class) ไปยังคลาสลูก (derived class) เพื่อลดความซ้ำซ้อนของโค้ดโดยใช้คำสั่ง super()
- Polymorphism: ความสามารถที่คลาสต่างกันสามารถตอบสนองต่อการเรียกใช้เมธอดเดียวกันในแบบของตนเองได้
- Abstraction: การซ่อนความซับซ้อนด้วย Abstract Base Classes (ABC) ผ่านการใช้โมดูล abc
สำหรับการจัดการข้อผิดพลาดใน Python ข้อผิดพลาดทางตรรกะคือสิ่งที่ค้นหายากที่สุดเนื่องจากโปรแกรมไม่มีการแจ้งเตือน วิธีรับมือที่ดีที่สุดคือการเขียนทดสอบและการใช้ try-except บล็อก โดยมีโครงสร้างสำคัญดังนี้:
- try: ชุดโค้ดที่มีความเสี่ยงเกิดข้อผิดพลาด
- except: ดักจับข้อผิดพลาดเฉพาะประเภท เช่น ValueError หรือ ZeroDivisionError
- else: ทำงานเฉพาะเมื่อไม่มีข้อยกเว้นเกิดขึ้น
- finally: ทำงานทุกครั้งไม่ว่าจะเกิดข้อผิดพลาดหรือไม่ เหมาะสำหรับเคลียร์รีซอร์ส
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น