mobile theme mode icon
theme mode light icon theme mode dark icon
Random Question สุ่ม
speech play
speech pause
speech stop

ทำความเข้าใจกับมัณฑนากรใน Python

มัณฑนากรคือรูปแบบการออกแบบที่ช่วยให้คุณสามารถปรับเปลี่ยนหรือขยายพฤติกรรมของออบเจ็กต์ได้โดยไม่ต้องเปลี่ยนการใช้งานเดิมของออบเจ็กต์ กล่าวอีกนัยหนึ่ง มัณฑนากรอนุญาตให้คุณเพิ่มฟังก์ชันการทำงานใหม่ให้กับอ็อบเจ็กต์ที่มีอยู่โดยไม่ต้องแก้ไขโค้ดหลัก มัณฑนากรโดยทั่วไปคือฟังก์ชันที่รับอ็อบเจ็กต์เป็นอาร์กิวเมนต์และส่งกลับอ็อบเจ็กต์ใหม่ที่ "ล้อม" อ็อบเจ็กต์ดั้งเดิม ออบเจ็กต์ใหม่มีเมธอดและคุณลักษณะเหมือนกับออบเจ็กต์ต้นฉบับ แต่ก็มีฟังก์ชันหรือลักษณะการทำงานเพิ่มเติมบางอย่างที่มัณฑนากรจัดเตรียมไว้ให้ ตัวอย่างเช่น สมมติว่าคุณมีคลาสชื่อ `Car` ซึ่งมีเมธอดที่เรียกว่า `drive ()`ที่ทำให้รถเคลื่อนที่ คุณสามารถสร้างมัณฑนากรที่เรียกว่า `SpeedLimitDecorator` ซึ่งจะปรับเปลี่ยนเมธอด `drive()` เพื่อจำกัดความเร็วของรถ `SpeedLimitDecorator` จะใช้วัตถุ 'Car' ดั้งเดิมเป็นอาร์กิวเมนต์ และส่งคืนวัตถุ 'Car' ใหม่ที่มีวิธีการและคุณลักษณะเหมือนกับ 'Car' ดั้งเดิม แต่มีฟังก์ชันเพิ่มเติมในการจำกัดความเร็ว ต่อไปนี้คือ ตัวอย่างของการใช้มัณฑนากรใน Python:
```
class Car:
def drive(self):
print("The car is driving")

class SpeedLimitDecorator:
def __init__(self, car):
self. car = car

def drive(self):
self.car.drive()
print("รถตอนนี้ถูกจำกัดไว้ที่ 50 ไมล์ต่อชั่วโมง")

car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # prints "รถกำลังขับ" และ "ตอนนี้รถถูกจำกัดไว้ที่ 50 ไมล์ต่อชั่วโมง"
```
ในตัวอย่างนี้ คลาส `SpeedLimitDecorator` ใช้อ็อบเจ็กต์ `Car` เป็นอาร์กิวเมนต์ในตัวสร้างของมัน จากนั้นจึงแก้ไข `drive( )` วิธีการของวัตถุ `Car` ดั้งเดิมเพื่อจำกัดความเร็ว คลาส `SpeedLimitDecorator` ยังมีเมธอด `drive()` ของตัวเองที่เรียกเมธอด `drive()` ดั้งเดิมของอ็อบเจ็กต์ที่ห่อไว้ แต่ด้วยข้อจำกัดเพิ่มเติมที่ 50 ไมล์ต่อชั่วโมง

Decorators เป็นเครื่องมือที่ทรงพลังสำหรับการแก้ไขหรือขยายอ็อบเจ็กต์ที่มีอยู่ โดยไม่เปลี่ยนแปลงการดำเนินการเดิม สามารถใช้เพื่อเพิ่มฟังก์ชันการทำงานใหม่ แก้ไขพฤติกรรม หรือแม้แต่แทนที่บางส่วนของการใช้งานออบเจ็กต์โดยไม่กระทบต่อส่วนที่เหลือของโค้ด

Knowway.org ใช้คุกกี้เพื่อให้บริการที่ดีขึ้นแก่คุณ การใช้ Knowway.org แสดงว่าคุณยอมรับการใช้คุกกี้ของเรา สำหรับข้อมูลโดยละเอียด คุณสามารถอ่านข้อความ นโยบายคุกกี้ ของเรา close-policy