คลาสและออบเจ็ค (Class and Object) ในภาษา Python

คลาส (Class) ในภาษา Python คือ ต้นแบบ (Blueprint) ที่กำหนดโครงสร้างและพฤติกรรมของออบเจ็ค (Object) โดยใช้คำสำคัญ class และชื่อคลาสตามด้วยส่วนประกอบที่อธิบายโครงสร้างของคลาส เช่น attribute (ตัวแปร), method (ฟังก์ชั่น), และ constructor (ฟังก์ชั่นสำหรับสร้างออบเจ็ค)

การสร้างออบเจ็คจากคลาส จะใช้ class name และวิธีการเรียกใช้จะเหมือนการเรียกใช้ฟังก์ชั่น โดยใช้ชื่อออบเจ็คตามด้วยวิธีการเรียกใช้เมธอดของออบเจ็ค

ในการสร้างออบเจ็กต์ (object) จากคลาส (class) ในภาษา Python จะต้องทำตามขั้นตอนดังนี้

  1. กำหนดคลาส (class) โดยใช้คีย์เวิร์ด class พร้อมกับชื่อคลาสและส่วนประกอบต่างๆ โดยส่วนประกอบหลักของคลาสจะประกอบไปด้วย method ต่างๆ ที่ใช้สำหรับการดำเนินการต่างๆ และ properties ซึ่งเป็นตัวแปรที่ใช้ในการเก็บค่าต่างๆ

  2. สร้างออบเจ็กต์ (object) จากคลาสโดยการเรียกใช้ constructor ซึ่งจะสร้างออบเจ็กต์ที่มี properties ต่างๆ ตามที่กำหนดใน constructor

  3. เรียกใช้ method ต่างๆ ของคลาสโดยใช้ออบเจ็กต์ที่สร้างขึ้น

คลาส (Class) ในภาษา Python เป็นโครงสร้างของ Object ซึ่งเป็นรูปแบบการนิยามของ Object ที่เราต้องการสร้าง โดย Class จะประกอบไปด้วย Attribute และ Method ต่างๆ ซึ่งใน Python เราสามารถสร้าง Instance หรือ Object จาก Class ได้ด้วยคำสั่งต่อไปนี้

object_name = Class_name(arguments)

โดย arguments คือพารามิเตอร์ที่ต้องการส่งเข้าไปใน Class สำหรับการกำหนดค่าของ Attribute และการทำงานของ Method

 

ตัวอย่างที่ 1 การสร้างคลาสและออบเจ็ค

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

    def bark(self):
        print(f"{self.name} barks!")

my_dog = Dog("Fido", 3)
print(my_dog.name) # Output: Fido
print(my_dog.age)  # Output: 3
my_dog.bark()      # Output: Fido barks!

จากตัวอย่าง ได้สร้างคลาส Dog ที่มี attribute name และ age และ method bark สำหรับพิมพ์ข้อความ “barks!” พร้อมกับชื่อของสุนัข จากนั้นเราสร้างออบเจ็ค my_dog จากคลาส Dog และเรียกใช้ attribute และ method ของออบเจ็ค my_dog ด้วยวิธีการเรียกใช้แบบดอท .

 

ตัวอย่างที่ 2 การสร้างคลาสและออบเจ็ค

# กำหนดคลาส Person
class Person:
    # constructor สำหรับกำหนด properties ของออบเจ็กต์
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # method สำหรับแสดงข้อมูลของออบเจ็กต์
    def show_info(self):
        print("Name:", self.name)
        print("Age:", self.age)

# สร้างออบเจ็กต์ person1 จากคลาส Person
person1 = Person("John", 30)

# เรียกใช้ method show_info ของออบเจ็กต์ person1
person1.show_info()

ผลลัพธ์ที่ได้ คือ

Name: John
Age: 30

จากตัวอย่าง กำหนดคลาส Person ซึ่งมี properties คือ name และ age โดยใช้ constructor เพื่อกำหนดค่าเริ่มต้นสำหรับ properties ดังกล่าว และมี method show_info สำหรับแสดงข้อมูลของออบเจ็กต์ Person

 

ตัวอย่างที่ 3 หากเรามีคลาสชื่อว่า Person ซึ่งประกอบไปด้วย Attribute เช่น name, age, gender และ Method เช่น introduce(), say_hello() เราสามารถสร้าง Object ของ Person ดังนี้

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
        
    def introduce(self):
        print("My name is " + self.name + ", I am " + str(self.age) + " years old.")
        
    def say_hello(self, other_person):
        print("Hello " + other_person.name + ", my name is " + self.name)

person1 = Person("John", 25, "male")
person2 = Person("Mary", 30, "female")

จากตัวอย่าง สร้างคลาส Person โดยมี Attribute คือ name, age, gender และ Method คือ introduce() และ say_hello() โดย Method __init__() เป็น Method พิเศษใน Python ที่จะถูกเรียกใช้งานเมื่อมีการสร้าง Object ใหม่ โดย self ใน Method __init__() จะเป็นการอ้างถึง Object ตัวเอง ซึ่ง Attribute ที่กำหนดใน Method __init__() จะถูกกำหนดค่าให้กับ Object ในขั้นตอนการสร้าง Object

สร้างคลาส Person และสร้างออบเจ็ค person1 และ person2 ของคลาส Person ด้วยการเรียกใช้เมท็อด init() ที่ถูกนิยามในคลาส Person ในการกำหนดค่าสำหรับแต่ละออบเจ็ค

เมื่อสร้างออบเจ็ค person1 และ person2 เรียบร้อยแล้ว สามารถเรียกใช้เมท็อดที่ถูกนิยามในคลาส Person ได้ ดังนี้

  • เรียกใช้เมท็อด introduce() ของ person1 หรือ person2 เพื่อแนะนำตัวของเจ้าของออบเจ็ค
  • เรียกใช้เมท็อด say_hello() ของ person1 หรือ person2 พร้อมกับการส่งออบเจ็คอื่นเข้าไปเพื่อให้เจ้าของออบเจ็คพูด “Hello” ต้อนรับอีกออบเจ็คนั้น