Написание класса, принимающего обратный вызов на Python? ⇐ Python

Программы на Python
Anonymous
Написание класса, принимающего обратный вызов на Python?

Сообщение Anonymous »

Мне нужно написать класс, который позволит подклассу устанавливать атрибут с именем функции. Затем эта функция должна быть вызываемой из экземпляров класса.

Например, я говорю, что мне нужно написать класс Fruit, в который подкласс может передавать приветственное сообщение. Класс Fruit должен предоставлять атрибут print_callback, который можно установить.

Код: Выделить всё

class Fruit(object):
print_callback = None

def __init__(self, *args, **kwargs):
super(Fruit, self).__init__(*args, **kwargs)
self.print_callback("Message from Fruit: ")
Мне нужно предоставить API, который может использоваться этим кодом (для ясности: этот код не может быть изменен, скажем, это сторонний код):

Код: Выделить всё

def apple_print(f):
print "%sI am an Apple!" % f

class Apple(Fruit):
print_callback = apple_print
Если я побегу:

Код: Выделить всё

mac = Apple()
Я хочу получить:


Сообщение от Fruit: Я — яблоко !


Вместо этого я получаю:


TypeError: apple_print() принимает ровно 1 аргумент (2 задано)


Я думаю, это потому, что self передается в качестве первого аргумента.

Итак, как мне написать класс Fruit? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/156 ... -in-python

Вернуться в «Python»