Я пытаюсь сделать прокси-сервер pyro4 индексируемым. Чтобы проверить это, я взял приветствие пример из http://pythonhosted.org/Pyro4/intro.html#simple-example, и я изменил его:make pyro4 proxy indexable
Сервер:
import Pyro4
class Test(object):
def __getitem__(self, index):
return index
test = Test()
print test[1]
print test[100]
daemon = Pyro4.Daemon()
uri = daemon.register(test)
print("Ready. Object uri =", uri)
daemon.requestLoop()
Клиент:
import Pyro4
uri = input("What is the Pyro uri of the object? ").strip()
test = Pyro4.Proxy(uri)
print test.__getitem__(1)
print test.__getitem__(100)
print test[1]
print test[100]
код [] нотация работает на сервере, но не также на клиентском прокси. Я получаю:
TypeError: 'Proxy' object does not support indexing
Но звонки непосредственно на адрес __getitem__
do work.
Это действительно работает. Но я вижу проблему больше в Python, а затем в Pyro. Я ожидал бы, что [0] будет просто синтаксическим сахаром вокруг a._ getitem _ (0). Вместо этого существует код, который проверяет наличие _ getitem _ в словаре. И это, возможно, просто для того, чтобы сделать сообщение об ошибке fancier: объект не индексируемый вместо _ getitem _ не определен. – andi