В пакете я выделил набор функций/переменных, которые вообще работают в классе. Поскольку эти функции не требовали конкретного контекста, они стали методами класса. Они могут использовать некоторые внешние функции, представленные функцией save_c
. Но я не могу получить следующий код для работы:Как ссылаться на метод класса в атрибуте класса?
def save_c(v):
print("c :" + v)
class Writer(object):
@classmethod
def save(cls, t, v):
cls.writers[t](v)
@classmethod
def save_a(cls, v):
print("a :" + v)
@classmethod
def save_b(cls, v):
print("b :" + v)
writers = [save_a, save_b, save_c]
if __name__ == "__main__":
Writer.save(1, [1, 2, 3])
Предыдущие результаты кода в следующее сообщение об ошибке:
TypeError: 'classmethod' object is not callable
Кто-нибудь знает, если то, что я пытаюсь сделать, это достижимым? Или я обязан использовать регулярные методы и создавать писателя везде, где мне нужно?
Мне нравится ваш ответ. Но если мне нужно использовать в более чем одном месте трюк 'writers [t], код становится длинным. –
@Guillaume: См. Обновленную версию моего ответа. – martineau