Python OOP (Classes & Objects)

   อัปเดตล่าสุด Feb. 1, 2024

OOP (Object Oriented Programming) เป็นอีกหนึ่งหัวข้อที่ควรรู้ถ้าต้องการศึกษาการทำงานของภาษายอดนิยมเหล่านี้ เช่น Python, Java, JavaScript, etc เป็นต้น จะช่วยให้เราอ่านทำความเข้าใจกับโค้ดรวมไปถึงการเขียนหรือออกแบบโค้ดได้ดี มีประสิทธิภาพมากยิ่งขึ้น หรือแม้แต่ coding interview ก็มีการทดสอบความรู้ความเข้าใจส่วนนี้เช่นกัน

OOP คืออะไร?

Object-Oriented Programming (OOP) คือ กระบวนการเขียนโปรแกรมเชิงวัตถุที่ยึดตามหลักแนวคิดของ "แม่แบบ (Class)" และ "วัตถุ (Object)" ให้เรามองว่า Class คือ พิมพ์เขียว (blueprint) ส่วน Object คือ การนำพิมพ์เขียวนี้ไปสืบทอดใช้งาน

ซึ่ง Python ก็ถือว่าเป็นหนึ่งในภาษายอดนิยมสำหรับการนำแนวคิด OOP ไปใช้งาน เนื้อหาในบทเรียนนี้จะครอบคลุมพื้นฐานของ OOP ใน Python ในเบื้องต้

ข้อดีของ OOP

  • โค้ดเป็นระบบ ระเบียบ ลดความซ้ำซ้อนของโค้ด
  • โค้ดมีความเป็นมาตรฐาน
  • ง่ายในการนำมาใช้ซ้ำ (Reusable)
  • มีความยืดหยุ่น (Flexible) สูง
  • มีความปลอดภัย
  • ง่ายในการจัดการ
  • เพิ่ม productivity
  • ฯลฯ


แนวคิดของ Class/Object

แนวคิดของคลาสจะแบ่งองค์ประกอบออกเป็น 3 ส่วนหลัก ๆ ดังต่อไปนี้

  • ออบเจ็กต์ (Object): คือ ตัวตนของวัตถุนั้น ๆ
  • คุณลักษณะ (Attributes): คือ ส่วนประกอบที่ทำให้เกิดออปเจ็กต์นั้นขึ้นมา เช่น ถ้าคลาสคือคน ออปเจ็กต์ก็จะประกอบไปด้วย ชื่อ อายุ สัญชาติ เพศ ผิว น้ำหนัก ส่วนสูง เป็นต้น
  • การกระทำ (Behavior): คือ การกระทำ พฤติกรรม ของออปเจ็กต์ ถ้าออปเจ็กต์คือคน ก็จะมีพฤติกรรมหรือการกระทำ เช่น กิน นอน เที่ยว ทำงาน เป็นต้น


ตัวอย่างการสร้าง Class แงว



ตัวอย่างการสร้าง Class

นี่คือตัวอย่างการสร้าง class ในไพธอน โดยชื่อคลาสจะถูกกำหนดด้วยตัวพิมพ์ใหญ่ (Capital Letter) เป็นตัวแรกของชื่อ

class Cat:
def __init__(self, name, age):
self.name = name
self.age = age

def display_name(self):
print(self.name, "is my cat name")

cat1 = Cat("SomSom", 5)
cat2 = Cat("Salid Noi", 7)

print(cat1.name) # Output: SomSom
print(cat2.age) # Output: 7

cat2.display_name() # Output: Salid Noi is my cat name

จากตัวอย่างด้านบนก็คือการสร้างคลาสแบบเบื้องต้น รวมไปถึงการเรียกใช้งาน class 

  •   Cat  คือ ชื่อคลาส (ขึ้นต้นด้วยตัวพิมพ์ใหญ่)
  •   __init__() คือ เมธอดพิเศษเอาไว้ใช้สำหรับเริ่มต้น (Initialize) คลาส
  •   display_name()  คือ เมธอด ในคำสั่งนี้ก็ทำเพียงแค่แสดงผลคำว่า "... is my cat name"
  •  cat1  และ  cat2 คือ ออบเจ็กต์ (Objects)
  • cat1.display_name()  คือ การเรียกใช้เมธอดของออบเจ็กต์ cat1



__init__( ) และ self ใน Python

ในภาษา Python นั้น   __init__()  เป็นเมธอดพิเศษ (Special or Dunder Method) หรือที่เรียกว่าคอนสตรัคเตอร์ (Constructor) ก็ได้เช่นกัน ซึ่ง  __init__()  จะถูกเรียกใช้โดยอัตโนมัติเมื่อมีการสร้างออบเจกต์ของคลาสขึ้นมา หรือเรียกได้ว่าจะเป็นส่วนของการเริ่มต้น (initialize) ของ class


เมธอด  __init__()ใช้พารามิเตอร์   self  ซึ่งเป็นการอ้างอิงถึงวัตถุที่กำลังสร้าง เพื่อให้สามารถเข้าถึงคุณสมบัติ (Attributes) และเมธอด (Methods) ของวัตถุ โดยพารามิเตอร์  self  ต้องเป็นพารามิเตอร์แรกในเมธอดที่กำหนดในคลาส ถึงแม้ว่าใน Python เราสามารถกำหนดพารามิเตอร์เป็นชื่ออะไรก็ได้ที่ไม่ใช่ self แต่สุดท้ายแล้วก็คือธรรมเนียมปฏิบัติ (convension) ของภาษาว่าควรต้องใช้  self ถึงจะเหมาะสมที่สุด

class Cat:
def __init__(self, name, age):
self.name = name
self.age = age


จากตัวอย่างของคลาส   Cat ด้านบนจะเห็นว่าได้มีการประกาศพารามิเตอร์ 3 ตัว (รวม  self ด้วย) นั่นก็คือ   self ,   name และ  age ครับ

method (เมธอด)

เมธอด (method) คือฟังก์ชันที่อยู่ภายในคลาส โดยเมธอดจะเป็นตัวกำหนดการกระทำ (behavior) ของคลาส ถ้าสังเกตให้ดีจะเห็นว่า method ก็คือฟังก์ชัน ๆ หนึ่ง เพียงแต่ว่าเป็นฟังก์ชันที่อยู่ภายใต้คลาสนั่นเอง


จากตัวอย่างโค้ดด้านบนสุด จะเห็นว่าเราสามารถเข้าถึง method ของ class ได้ดังต่อไปนี้

cat2.display_name() # Output: Salid Noi is my cat name
  •  cat2 คือออปเจคท์
  •  displya_name() คือเมธอด




คอร์สเรียนแนะนำ