Python 装饰器:传递参数给方法
这个装饰器 def _feed_data(*args, **kwargs): 用于将参数传递给被装饰的方法。它可以接收任意数量的位置参数和关键字参数,并将它们传递给被装饰的方法。被装饰的方法必须至少接收一个参数 self,以便访问类的实例。
这个装饰器使用了 Python 的 functools 模块来保留被装饰方法的元数据,例如函数名和文档字符串。
def _feed_data(*args, **kwargs):
def wrap(func):
@functools.wraps(func)
def _wrap(self):
return func(self, *args, **kwargs)
return _wrap
return wrap
使用方法:
class MyClass:
@_feed_data('arg1', kwarg1='value1')
def my_method(self, arg2):
print(f'arg2: {arg2}')
my_instance = MyClass()
my_instance.my_method('arg3') # 输出: arg2: arg3
解释:
_feed_data装饰器接受任意数量的位置参数和关键字参数。wrap函数包装了被装饰的方法func。_wrap函数接收self参数,并调用func,将_feed_data中传递的参数也传递给func。functools.wraps保留了被装饰方法的元数据。
注意: 被装饰的方法必须至少接收一个参数 self,以便访问类的实例。
原文地址: https://www.cveoy.top/t/topic/jqLh 著作权归作者所有。请勿转载和采集!