Я пишу декоратор для методов, которые должны проверять родительские методы (методы с тем же именем в родителях класса, в котором я украшаю).Доступ к классу, которому принадлежит декорированный метод от декоратора
Пример (из четвертого примера PEP 318):
def returns(rtype):
def check_returns(f):
def new_f(*args, **kwds):
result = f(*args, **kwds)
assert isinstance(result, rtype), \
"return value %r does not match %s" % (result,rtype)
return result
new_f.func_name = f.func_name
# here I want to reach the class owning the decorated method f,
# it should give me the class A
return new_f
return check_returns
class A(object):
@returns(int)
def compute(self, value):
return value * 3
Так я ищу код, чтобы напечатать вместо # здесь я хочу ...
Спасибо.
Я не использовал ваш код напрямую, потому что моя проблема была гораздо более конкретной, чем я говорил вам. Но использование * name * при пересечении * dct * немного нечетно, так как * name * обычно используется в конструкции * type *. Спасибо, я думаю, что все равно согласиться на ваш ответ, потому что это мне очень помогло. – Gra
О, это ошибка, исправлена. –