Bản tóm tắt. trong hướng dẫn này, bạn sẽ tìm hiểu về trình trang trí lớp Python. Sau phần hướng dẫn, bạn sẽ biết cách định nghĩa các lớp là bộ trang trí
Giới thiệu về trình trang trí lớp Python
Cho đến giờ bạn đã học cách sử dụng các hàm để xác định các bộ trang trí
Ví dụ: hàm star sau in ra một số ký tự * trước và sau khi gọi hàm trang trí
def star(n): def decorate(fn): def wrapper(*args, **kwargs): print(n*'*') result = fn(*args, **kwargs) print(result) print(n*'*') return result return wrapper return decorate
Code language: Python (python)star là một nhà máy trang trí trả lại một người trang trí. Nó chấp nhận một đối số xác định số ký tự * để hiển thị
Sau đây minh họa cách sử dụng nhà máy trang trí star
@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)đầu ra
***** 30 *****
Nhà máy trang trí
@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)2 lấy một đối số và trả về một đối số có thể gọi được. Cuộc gọi có thể lấy một đối số (@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)3) là một chức năng sẽ được trang trí. Ngoài ra, có thể gọi được có thể truy cập đối số (_______1_______4) được chuyển đến nhà máy trang tríMột thể hiện của lớp có thể gọi được khi nó triển khai phương thức
@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)5. Do đó, bạn có thể tạo phương thức@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)6 làm trang tríVí dụ sau viết lại nhà máy trang trí star bằng cách sử dụng một lớp thay thế
________số 8_______Và bạn có thể sử dụng lớp
@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)8 làm trang trí như thế này@Star(5) def add(a, b): return a + b
Code language: Python (python)@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)9 trả về một thể hiện của lớp@star(5) def add(a, b): return a + b add(10, 20)
Code language: Python (python)8. Ví dụ đó có thể gọi được, vì vậy bạn có thể làm điều gì đó như