Класс Decorator для методов экземпляра переопределяет себя в вызове - PullRequest
0 голосов
/ 21 ноября 2018

Можно ли создать класс декоратора для отслеживания чего-либо во внешнем классе и в то же время разрешать нормально вызывать декорированные методы?Когда вы реализуете call для вашего класса декоратора, self, который он передает, является экземпляром декоратора, а не экземпляром, в котором метод фактически вызывается.Есть ли способ обойти это?

class Outer:
  class Inner:
    def __init__(self, func):
      self.func = func

    def __call__(self, *args, **kwargs):
      pass
      # Something like return Inner-self.func(Outer-self, *args, **kwargs)

  def __init__(self, number):
    self.number = number

  @Inner
  def print_number(self):
    print(self.number)

instance = Outer(2)

instance.print_number()
# Should print 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...