Python: установить метод класса как атрибут класса - PullRequest
0 голосов
/ 11 июня 2011

В Python 3, по-видимому, недопустимо следующее:

class A:
 callback = A.callback_function

 def callback_function(self):
  pass

Вы получите сообщение о том, что тип «А» не определен. Это потому, что «А» не может упоминаться само по себе? Могу ли я в любом случае достичь такой функциональности?

Я пытаюсь сделать что-то вроде этого: у меня есть базовый класс:

class Base:
 callback = Base.ignore

 def ignore(self):
  pass

 def some_other_function(self):
  self.callback()

В подклассе я хотел бы установить другую функцию обратного вызова:

class Derived(Base):
 callback = Derived.special_function

 def special_function(self):
  do_stuff()

1 Ответ

9 голосов
/ 11 июня 2011

Ну, вы можете просто назвать свою функцию callback, и она будет такой же, но если вы действительно настаиваете на этом:

class A:
    def callback_function(self): pass

    callback = callback_function
...