*args 将传递进函数多余的非命名参数解析为一个元组供函数使用,**kwargs 将命名参数解析为字典供函数使用。两者都是用与处理参数的。
from time import sleep, ctime
class ThreadFunc:
# args 解析除第一个参数以外的剩余普通参数,kwargs 解析命名参数
def __init__(self, func, *args, **kwargs) -> None:
self.func = func
self.args = args
self.kwargs = kwargs
print(args, kwargs)
def __call__(self, *args, **kwds):
print(args, kwds)
def loop(nses):
print(f'start at {ctime}')
sleep(nses)
print(f'end at {ctime}')
tf = ThreadFunc(loop, 3, name='loop') # (3,) {'name': 'loop'}