Как переместить функцию в класс? питон

Я хотел бы использовать сервисные функции в методе класса, где сервисная функция определяется где-то еще. Я хочу быть динамичным, чтобы я мог определять разные функции в разных ситуациях. Я пробовал это:

def print_a():
    print 'a'

class A:
    func = print_a
    @classmethod
    def apply(cls):
        cls.func()

A.apply()

Все же я получаю эту ошибку:

unbound method print_a() must be called with A instance as first argument (got nothing instead)

Есть идеи, как заставить это работать?

1 ответ

Вы можете использовать звонок

def print_a():
    print 'a'

class A:

    func = print_a.__call__

    @classmethod
    def apply(cls):
        cls.func()

A.apply()

Выход

a
Другие вопросы по тегам