Python การใช้งาน Object Method

ใน Python Object Method คือฟังก์ชันที่ถูกกำหนดภายในคลาส (class) และถูกเรียกใช้โดยวัตถุ (object) ของคลาสนั้น ๆ โดย Object Method สามารถเข้าถึงและจัดการกับข้อมูลที่ถูกเก็บไว้ในวัตถุได้ และสามารถปฏิสัมพันธ์กับคุณสมบัติ (attributes) หรือการทำงานภายในคลาสได้

การใช้งาน Object Method

การสร้าง Object Method ทั่วไป

Object Method ถูกสร้างขึ้นเหมือนฟังก์ชันปกติ แต่ต้องกำหนดภายในคลาส และจะต้องมี self เป็นอาร์กิวเมนต์แรกในทุกฟังก์ชัน ซึ่ง self เป็นตัวแทนของวัตถุที่ถูกสร้างจากคลาสนั้น ๆ

Python
class Circle:
    def __init__(self, radius):
        self.radius = radius

    # Object Method ที่คำนวณพื้นที่
    def area(self):
        return 3.14 * self.radius ** 2

    # Object Method ที่คำนวณเส้นรอบวง
    def circumference(self):
        return 2 * 3.14 * self.radius

# สร้างวัตถุจากคลาส Circle
circle = Circle(5)

# เรียกใช้ Object Method
print("Area:", circle.area())  # Output: Area: 78.5
print("Circumference:", circle.circumference())  # Output: Circumference: 31.4

ในตัวอย่างนี้ มีการสร้าง Object Method สองตัวคือ area() และ circumference() เพื่อคำนวณพื้นที่และเส้นรอบวงของวงกลม ซึ่งสามารถเรียกใช้ผ่านวัตถุ circle

Object Method ที่เปลี่ยนแปลงค่าคุณสมบัติ

นอกจาก Object Method จะใช้คำนวณหรือแสดงผลแล้ว ยังสามารถใช้ในการแก้ไขค่าคุณสมบัติ (attribute) ของวัตถุได้

Python
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model
        self.speed = 0

    # Object Method เพื่อเปลี่ยนแปลงความเร็ว
    def accelerate(self, increment):
        self.speed += increment
        return f"Speed increased to {self.speed} km/h"

    # Object Method เพื่อหยุดรถ
    def stop(self):
        self.speed = 0
        return "Car has stopped."

# สร้างวัตถุจากคลาส Car
car = Car("Toyota", "Camry")

# เรียกใช้ Object Method เพื่อเพิ่มความเร็ว
print(car.accelerate(50))  # Output: Speed increased to 50 km/h

# เรียกใช้ Object Method เพื่อหยุดรถ
print(car.stop())  # Output: Car has stopped.

ในตัวอย่างนี้ Object Method accelerate() ใช้ในการเพิ่มความเร็วรถ และ stop() ใช้ในการหยุดรถ โดย Object Method เหล่านี้มีการแก้ไขค่าของคุณสมบัติ speed ภายในวัตถุ

Object Method ที่รับค่าอาร์กิวเมนต์เพิ่มเติม

Object Method สามารถรับอาร์กิวเมนต์เพิ่มเติมได้ตามความจำเป็น ซึ่งทำให้การทำงานของ Object Method มีความยืดหยุ่นมากขึ้น

Python
class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    # Object Method ที่คำนวณพื้นที่ของสี่เหลี่ยมผืนผ้า
    def area(self):
        return self.width * self.height

    # Object Method ที่เปลี่ยนขนาดของสี่เหลี่ยมผืนผ้า
    def resize(self, new_width, new_height):
        self.width = new_width
        self.height = new_height

# สร้างวัตถุจากคลาส Rectangle
rect = Rectangle(10, 5)

# เรียกใช้ Object Method เพื่อคำนวณพื้นที่
print("Area:", rect.area())  # Output: Area: 50

# เรียกใช้ Object Method เพื่อเปลี่ยนขนาด
rect.resize(20, 10)

# คำนวณพื้นที่ใหม่หลังจากเปลี่ยนขนาด
print("New Area:", rect.area())  # Output: New Area: 200

ในตัวอย่างนี้ Object Method resize() รับค่าอาร์กิวเมนต์เพิ่มเติมเพื่อเปลี่ยนขนาดของสี่เหลี่ยมผืนผ้า และ area() ใช้คำนวณพื้นที่ใหม่หลังจากการเปลี่ยนขนาด

การใช้งาน Object Method ร่วมกับ Static Method และ Class Method

นอกจาก Object Method ยังมี Static Method และ Class Method ซึ่งเป็นรูปแบบของเมธอดที่มีลักษณะพิเศษแตกต่างกัน

  • Static Method ไม่ต้องการ self และไม่เข้าถึงคุณสมบัติของคลาสโดยตรง
  • Class Method ใช้ cls แทน self เพื่อเข้าถึงคลาสแทนวัตถุ
Python
class MathOperations:
    # Object Method ที่คำนวณผลรวม
    def add(self, x, y):
        return x + y

    # Static Method ที่คำนวณค่ากำลังสอง
    @staticmethod
    def square(n):
        return n * n

    # Class Method ที่ใช้ในการสร้างวัตถุใหม่
    @classmethod
    def from_string(cls, string):
        x, y = map(int, string.split(","))
        return cls(x, y)

# เรียกใช้ Object Method
math_op = MathOperations()
print(math_op.add(3, 4))  # Output: 7

# เรียกใช้ Static Method โดยไม่ต้องสร้างวัตถุ
print(MathOperations.square(5))  # Output: 25

ในตัวอย่างนี้มีการแสดงทั้ง Object Method, Static Method (square) และ Class Method (from_string) ซึ่งแต่ละรูปแบบของเมธอดมีความแตกต่างกันในการทำงานและการเข้าถึงข้อมูลภายในคลาส

Object Method ที่เรียกใช้เมธอดอื่นภายในคลาส

Object Method สามารถเรียกใช้เมธอดอื่นภายในคลาสเดียวกันเพื่อให้การทำงานซับซ้อนขึ้นได้

Python
class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    # Object Method ที่แสดงข้อมูลพนักงาน
    def display_info(self):
        return f"Employee: {self.name}, Salary: {self.salary}"

    # Object Method ที่เพิ่มโบนัสให้พนักงาน
    def add_bonus(self, bonus):
        self.salary += bonus
        return self.display_info()

# สร้างวัตถุจากคลาส Employee
emp = Employee("Alice", 50000)

# เรียกใช้ Object Method เพื่อเพิ่มโบนัสและแสดงข้อมูลใหม่
print(emp.add_bonus(5000))  # Output: Employee: Alice, Salary: 55000

ในตัวอย่างนี้ Object Method add_bonus() จะเพิ่มโบนัสและเรียกใช้เมธอด display_info() เพื่อแสดงผลข้อมูลพนักงานหลังจากการเพิ่มโบนัส

สรุป

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

แชร์เรื่องนี้