У меня есть класс A с двумя методами, метод_one, который использует функцию defer и method_two, в функции обратного вызова я устанавливаю значение self.value и добавляю его в цепочку обратного вызова. но после этого значение self.value по-прежнему является исходным значением метода method_two. Короче говоря, присвоение self.value в функции обратного вызова недопустимо.twisted defer сделать присвоение переменных экземпляра класса недействительным
from twisted.internet import utils, reactor
class A(object):
def __init__(self):
self.value = []
def method_one(self):
d = utils.getProcessOutput('/bin/sh', ('-c', 'ls /home')) # return a defer
def set_self_value(result):
self.value = result.split() # assign result.split() to self.value
d.addCallback(set_self_value)
def method_two(self):
print self.value # it is still [] rather than result
a = A()
a.method_one()
a.method_two()
reactor.run()
output:
[] # i expect self.value is ['lost+found', 'user']
lost+found
user
заранее спасибо :-)
'result', кажется, не содержит ничего, когда' set_self_value' называется. – ILostMySpoon