Я пытаюсь создать декоратор, который проверит наличие параметра и получит имя метода, который оформлен.
Мне удалось получить доступ к названию метода в моем втором слое функции, но не в первом.
Например, у меня есть этот декоратор
def p_decorate(name, *a, **k):
print(name + ' is at object: ')
print a #I would like to get the method object here
def fn(*a, **k)
print a #object prints here instead
return fn
return p_decorate
У меня есть этот класс, который я хотел бы украсить
class Person(object):
@p_decorate('John')
def get_fullnameobject(self):
return self.name
Я ожидаю, что он напечатает:
John is at object: (<function get_fullnameobject at 0x000000003745A588>,)
(<function get_fullnameobject at 0x000000003745A588>,)
но вывод:
John is at object: ()
(<function get_fullnameobject at 0x000000003745A588>,)