Я могу написать дескриптор, возвращающий будущее, на которое можно было бы ожидать.Установка дескриптора в python3.5 асинхронно
class AsyncDescriptor:
def __get__(self, obj, cls=None):
# generate some async future here
return future
def __set__(self, obj, value):
# generate some async future here
return future
class Device:
attr=AsyncDescriptor()
device=Device()
Теперь я могу получить значение в сопрограмме с value=await device.attr
.
Как бы установить этот атрибут?
await device.attr=5
-> SyntaxError: не может назначить ждать выражение:await setattr(device, 'attr', 5)
-> TypeError: объект NoneType не может быть использован в 'ждут' выражениеdevice.attr=5
-> RuntimeWarning: сопрограммная '__set__' никогда не ожидалось
'__set__' не должен ничего возвращать. Вы хотите, чтобы «значение» было разрешено асинхронно? – jonrsharpe
Да, это была бы цель –
Но ваши примеры все передают значение, а не будущее. – jonrsharpe