Python: установить метод класса в качестве атрибута класса

#python #function #static #attributes #callback

#python #функция #статический #атрибуты #обратный вызов

Вопрос:

Следующее, похоже, недопустимо в python 3:

 class A:
 callback = A.callback_function

 def callback_function(self):
  pass
  

Вы получите сообщение об ошибке, в котором говорится, что тип ‘A’ не определен. Это потому, что на ‘A’ нельзя ссылаться в нем самом? Могу ли я в любом случае достичь функциональности такого типа?

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

 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:

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

 class A:
    def callback_function(self): pass

    callback = callback_function