装饰器可以接受参数吗?
代码尝试使用带有参数(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中文网其他相关文章!