Как передать обратный вызов Foo.finished в doSmthAsync. Можно ли как-то получить доступ к себе при определении doSmthAsync(callback=self.finished).
import doSmthAsync from library
class Foo:
doJob = doSmthAsync(callback=self.finished)
def finished():
pass
Для тех, кто предложит реконструировать код: я знаю много хитростей, как это исправить. Но вопрос в доступности self при определении doSmthAsync(callback=self.finished).
почему бы не передать self в качестве параметра doSmthAsync? Затем вы можете получить доступ к self и всем его атрибутам и методам.
@Alex Я не буду передавать self.finished в функцию doSmthAsync ext.
@Mike Scotty, но self в данный момент недоступен (момент, когда я пытаюсь его использовать)
может быть, сделать это в __init__, а не на уровне класса?






В self нет ничего волшебного, это просто соглашение об именах для первый аргумент методов экземпляра, которое, как ожидается, будет ссылкой на текущий экземпляр (тот, который был вызван методом). IOW это обычный аргумент функции - технически локальная переменная.
FWIW, внутри блока операторов class сам объект класса еще даже не существует - он создается только после выполнения оператора class - поэтому нет возможности ссылаться на класс из оператора класса. Но на самом деле в этом нет необходимости, вы можете получить прямой доступ к функции finished (да, я сказал «функция», потому что на данный момент это простая функция, см. Ссылку выше) из блока оператора класса - по крайней мере, один раз функция было определено:
class Foo(object):
def finished(self):
pass
print("finished : {}".format(finished)
Я не знаю, что должен делать doSmthAsync, поэтому невозможно опубликовать правильное питоническое решение вашей проблемы, но его, безусловно, можно решить с помощью свойства или настраиваемого дескриптора - или даже простого метода FWIW.
Я принял ваш ответ, но что означают слова: IOW, FWIW, cf?
"другими словами", "чего стоит", "см. также"
Я запутался. Вы хотите получить доступ к объекту
Foo()из обратного вызова? Здесь может пригодиться Минимальный, полный и проверяемый пример.