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