mobile theme mode icon
theme mode light icon theme mode dark icon
Random Question Ngẫu nhiên
speech play
speech pause
speech stop

Tìm hiểu về trang trí trong Python

Trình trang trí là một mẫu thiết kế cho phép bạn sửa đổi hoặc mở rộng hành vi của một đối tượng mà không thay đổi cách triển khai ban đầu của đối tượng. Nói cách khác, trình trang trí cho phép bạn thêm chức năng mới vào đối tượng hiện có mà không cần sửa đổi mã lõi của nó.

Trình trang trí thường là một hàm lấy một đối tượng làm đối số và trả về một đối tượng mới "bao bọc" đối tượng ban đầu. Đối tượng mới có cùng các phương thức và thuộc tính như đối tượng ban đầu, nhưng nó cũng có một số chức năng hoặc hành vi bổ sung do trình trang trí cung cấp.

Ví dụ: giả sử bạn có một lớp tên là `Car` có một phương thức gọi là `drive ()` làm cho ô tô chuyển động. Bạn có thể tạo một trình trang trí tên là `SpeedLimitDecorator` để sửa đổi phương thức `drive()` để giới hạn tốc độ của ô tô. `SpeedLimitDecorator` sẽ lấy đối tượng `Car` ban đầu làm đối số và trả về một đối tượng `Car` mới có cùng phương thức và thuộc tính như `Car` ban đầu, nhưng có thêm chức năng giới hạn tốc độ.

Đây là một ví dụ về cách bạn có thể sử dụng một công cụ trang trí trong Python:
```
class Car:
def drive(self):
print("The car is doing")

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

def drive(self):
self.car.drive()
print("Chiếc xe hiện bị giới hạn ở tốc độ 50 mph")

car = Car()
speed_limited_car = SpeedLimitDecorator(car)
speed_limited_car.drive() # print "Ô tô đang lái" và "Ô tô hiện bị giới hạn ở tốc độ 50 mph"
```
Trong ví dụ này, lớp `SpeedLimitDecorator` lấy đối tượng `Car` làm đối số trong hàm tạo của nó, sau đó sửa đổi `drive( )` của đối tượng `Car` ban đầu để giới hạn tốc độ của nó. Lớp `SpeedLimitDecorator` cũng có phương thức `drive()` riêng gọi phương thức `drive()` ban đầu của đối tượng được bao bọc, nhưng với giới hạn bổ sung là 50 mph.

Decorators là một công cụ mạnh mẽ để sửa đổi hoặc mở rộng các đối tượng hiện có mà không thay đổi việc triển khai ban đầu của chúng. Chúng có thể được sử dụng để thêm chức năng mới, sửa đổi hành vi hoặc thậm chí thay thế các phần triển khai của đối tượng mà không ảnh hưởng đến phần còn lại của mã.

Knowway.org sử dụng cookie để cung cấp cho bạn dịch vụ tốt hơn. Bằng cách sử dụng Knowway.org, bạn đồng ý với việc chúng tôi sử dụng cookie. Để biết thông tin chi tiết, bạn có thể xem lại văn bản Chính sách cookie của chúng tôi. close-policy