裝飾器可以接受參數嗎?
程式碼嘗試使用帶有參數(insurance_mode)的裝飾器(@execute_complete_reservation),但失敗。發生這種情況是因為帶有參數的裝飾器具有不同的語法。
已修訂的裝飾器語法:
帶參數的裝飾器傳回將一個函數作為參數的函數,然後傳回另一個函數功能。它本質上傳回一個普通的裝飾器。
def decorator_factory(argument): def decorator(function): def wrapper(*args, **kwargs): # Additional code function(*args, **kwargs) # More additional code return wrapper return decorator
應用裝飾器:
使用此語法,原始程式碼可以修改如下:
@execute_complete_reservation_factory(True) def test_booking_gta_object(self): self.test_select_gta_object()
在這個修改後的程式碼中,@execute_complete_reservation_factory 是一個工廠函數,它傳回一個裝飾器,將實際的測試函數作為參數。
以上是Python 裝飾器可以接受參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!