Có tương tự C# cho trình trang trí chức năng của Python không? Có vẻ như nó có thể thực hiện được với các thuộc tính và khung phản chiếu, nhưng tôi không thấy một cách để thay thế các hàm trong thời gian chạy.trang trí chức năng trong C#
Python decorators thường làm việc theo cách này:
class decorator(obj):
def __init__(self, f):
self.f = f
def __call__(self, *args, **kwargs):
print "Before"
self.f()
print "After"
@decorator
def func1():
print "Function 1"
@decorator
def func2():
print "Function 2"
Calling Func1 và Func2 sau đó sẽ cho kết quả trong
Before Function 1 After Before Function 2 After
Ý tưởng là trang trí sẽ cho tôi dễ dàng thêm tác vụ thông thường tại các điểm xuất nhập cảnh của nhiều hàm.
Tôi thấy đây là một phần giới thiệu thú vị về lý do trái ngược với điều gì. http://python.about.com/gi/dynamic/offsite.htm?zi=1/XJ&sdn=python&cdn=compute&tm=12&f=10&su=p284.9.336.ip_p504.1.336.ip_&tt=29&bt=0&bts=1&zu=http % 3A // www.python.org/doc/2.4.4/whatsnew/node6.html – ShuggyCoUk
Hmm, tôi đã hy vọng một thứ gì đó đã được tích hợp sẵn trong ngôn ngữ nhưng từ các câu trả lời có vẻ như không có cách nào đơn giản để làm nó mà không cần thêm một khung công tác mới. Dự án của tôi rất nhỏ nên có lẽ nó quá mức cần thiết để làm theo cách đó. – jtjin