1. truetug.ya.ru

    29.01.2010

    0 ↑
    1 ↓
    К примеру есть класс, который при инициализации принимает инстанс некой функции. Я хочу потом из одного из методов класса эту функцию вызывать и не передавать в нее инстанс самого класса. Как мне эту функцию внутри класса хранить и как вызывать?

    Вот примерно так я себе это представлял, но оно, понятно, так не работает:
    class SomeClass():
    def __init__(self, function):
    self.function = function

    def someMethod(self, some_data):
    self.data = self.function(some_data)
  2. Вот примерно так я себе это представлял, но оно, понятно, так не работает:

    Вам понятно? Расскажите почему "так не работает".

  3. truetug.ya.ru

    29.01.2010

    0 ↑
    2 ↓
    Смутило, что в эклипсовом дебаггере ее не видно.
  4. Виталий

    29.01.2010

    0 ↑
    1 ↓
    Без декораторов не обойтись.
    Вместо self.function = function
    пишем
    self.function = staticmethod(function).__get__(self)
    ...
    def foo(x):
    print x
    return x
    x = SomeClass(foo)
    x.someMethod(5)
    print x.data
    print x.function
    Выглядит коряво, конечно.
  5. Смутило, что в эклипсовом дебаггере ее не видно.

    А с каких пор Эклипсовый дебагер отвечает за работу кода?:-)

    В общем суть в том, что код вполне нормальный. Не понятно почему у вас это вызвало затруднения.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.