Всем привет!)
В args (
def wrapper(*args, **kwargs)
) декоратора откуда-то появился класс (
песочница):
import functools
def tokenizer(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print(args) # (<class '__main__.VK'>, {'param1': 'value1', 'param2': 'value2'})
# откуда в args <class '__main__.VK'>?
_, params = args
params.update({'access_token': '1234567890'})
return func(*args, **kwargs)
return wrapper
class VKMeta(type):
def __new__(mcs, name, bases, attrs):
for attr, method in attrs.items():
if not attr.startswith('__'):
attrs[attr] = classmethod(tokenizer(method))
return super().__new__(mcs, name, bases, attrs)
class VK(metaclass=VKMeta):
def get(self, params):
# тело метода
return params
print(VK.get({'param1': 'value1', 'param2': 'value2'}))
Почему так происходит? Там же в песочнице есть пример другого декоратора.