Hướng dẫn what is decorator module in python? - mô-đun trang trí trong python là gì?
Vấn đềPython có một vài hình thức cho các nhà trang trí, bạn có thể có một người trang trí đơn giản đơn giản, không có lập luận: Show @mydecorator def foo(): pass Hoặc một người trang trí với một số lập luận: @mydecorator(1, 2) def foo(): pass Bạn thậm chí có thể trang trí một lớp học: @mydecorator class Foo(object): pass Và mỗi hình thức là một chút khác nhau để thực hiện. Điều này thật khó chịu nếu bạn muốn tạo ra các nhà trang trí dễ sử dụng, nơi nhà phát triển không cần phải lo lắng về @mydecorator(1, 2) def foo(): pass0 làm việc khác với @mydecorator(1, 2) def foo(): pass1. Mô -đun trang tríLớp @mydecorator(1, 2) def foo(): pass2 cho phép bạn dễ dàng tạo các trình trang trí rộng bao gồm tất cả các biểu mẫu và tất cả các loại (chức năng, phương thức, lớp) bằng cách sử dụng cùng một giao diện: import decorators class mydecorator(decorators.Decorator): def decorate_func(self, func, *dec_args, **dec_kwargs): def decorator(*args, *kwargs): print("You passed into the decorator these arguments", dec_args, dec_kwargs) print("You passed into your function these arguments", args, kwargs) print("Your function is", func) return func(*args, **kwargs) return decorator def decorate_class(self, klass, *dec_args, **dec_kwargs): print("You passed into the decorator these arguments", dec_args, dec_kwargs) print("Your class is", klass) return klass Sau đó, bạn có thể sử dụng bộ trang trí này: @mydecorator def foo(): print "foo()" @mydecorator(1, 2, boom="blam") def bar(*args, **kwargs): print "bar()" @mydecorator class Baz(object): pass @mydecorator(1, 2, boom="blam") class Che(object): pass Bây giờ, người trang trí của bạn có thể trang trí các chức năng hoặc lớp học, vượt qua trong các đối số hoặc không, và bạn không bao giờ phải lo lắng về sự khác biệt tinh tế giữa các nhà trang trí, và tốt nhất là bạn không phải nhân đôi mã. Trang trí khácNgười nắn dịchLớp @mydecorator(1, 2) def foo(): pass3 là tốt nếu bạn muốn tạo một bộ trang trí hoàn toàn linh hoạt, nếu bạn muốn thực thi người trang trí của mình chỉ được sử dụng cho một chức năng/phương thức, bạn có thể sử dụng @mydecorator(1, 2) def foo(): pass4. Nếu bạn muốn chỉ trang trí một lớp, hãy sử dụng @mydecorator(1, 2) def foo(): pass5 và nếu bạn muốn trang trí mọi phiên bản của một lớp, hãy sử dụng @mydecorator(1, 2) def foo(): pass6. Bất kể lớp con nào bạn sử dụng, bạn sẽ ghi đè phương thức @mydecorator(1, 2) def foo(): pass7 để trả về chức năng trang trí của bạn: import decorators class only_func(FuncDecorator): def decorate(self, func, *dec_a, **dec_kw): def decorator(*args, **kwargs): return func(*args, **kwargs) return decorator # this will work @only_func def foo(): pass # this will fail @only_func class Foo(object): pass Trang trí tài sảnNhà trang trí @mydecorator(1, 2) def foo(): pass8 là một sự thay thế thả vào cho bộ trang trí @mydecorator(1, 2) def foo(): pass8 tích hợp của Python, với chức năng bổ sung: from decorators import property class Foo(object): @property def bar(self): """This will act just like python's built-in @property decorator""" return 1 @property(cached="_che") def che(self): """This will cache the return value into _che and add a setter/deleter""" return 1 Trang trí lớp họcCho phép bạn tạo một thuộc tính trên lớp: from decorators import classproperty class Foo(object): @classproperty def bar(cls): """Available as Foo.bar""" return 1 print(Foo.bar) # 1 Cài đặtSử dụng PIP:
Hoặc, để có được phần mới nhất và lớn nhất từ nguồn:
Máy trang trí Python được sử dụng để làm gì?Trình trang trí là một mẫu thiết kế trong Python cho phép người dùng thêm chức năng mới vào một đối tượng hiện có mà không cần sửa đổi cấu trúc của nó. Người trang trí thường được gọi trước khi định nghĩa về một chức năng bạn muốn trang trí.allows a user to add new functionality to an existing object without modifying its structure. Decorators are usually called before the definition of a function you want to decorate.
Trang trí Python và ví dụ là gì?Các nhà trang trí cung cấp một cú pháp đơn giản để gọi các chức năng bậc cao. Theo định nghĩa, một bộ trang trí là một hàm có một chức năng khác và mở rộng hành vi của hàm sau mà không sửa đổi rõ ràng nó.a function that takes another function and extends the behavior of the latter function without explicitly modifying it.
Tại sao chúng ta sử dụng người trang trí?Bạn sẽ sử dụng một bộ trang trí khi bạn cần thay đổi hành vi của một hàm mà không cần sửa đổi chức năng.Một vài ví dụ tốt là khi bạn muốn thêm ghi nhật ký, hiệu suất kiểm tra, thực hiện bộ nhớ đệm, xác minh quyền, v.v.Bạn cũng có thể sử dụng một khi bạn cần chạy cùng một mã trên nhiều chức năng.when you need to change the behavior of a function without modifying the function itself. A few good examples are when you want to add logging, test performance, perform caching, verify permissions, and so on. You can also use one when you need to run the same code on multiple functions.
Người trang trí trong lớp Python là gì?Một người trang trí trong Python là bất kỳ đối tượng Python nào có thể gọi được được sử dụng để sửa đổi một hàm hoặc một lớp.Một tham chiếu đến một chức năng "func" hoặc một lớp "C" được chuyển cho một người trang trí và người trang trí trả về một chức năng hoặc lớp được sửa đổi.any callable Python object that is used to modify a function or a class. A reference to a function "func" or a class "C" is passed to a decorator and the decorator returns a modified function or class. |