我正在尝试从另一个远程Pyro对象p1.get_name()
调用Pyro对象方法p2
。该方法应返回p1
对象的名称,但不返回任何值(空字符串)。令人惊讶的是,我看到p1
可以访问p2
,因为当我调用p1.print_hello()
时,它可以工作。似乎传递了一个新实例,而不是初始化了一个实例,我不确定这是怎么回事。请看下面的代码,谢谢您的帮助!
下面的代码创建代理(出于可读性,我忽略了名称服务器并创建了守护程序):
def create_proxy(ns_host,thing_host):
ns = Pyro4.locateNS(host=ns_host)
uri = ns.lookup(thing_host)
return Pyro4.Proxy(uri)
p1 = create_proxy('localhost','host1')
p1.init()
p2 = create_proxy('localhost','host2')
p2.init(p1)
p1和p2对象的类定义如下所示:
Class Host1:
def __init__(self)
self.name = ''
def init(sut):
self.name = 'host 1'
def get_name(self):
return self.name
Class Host2:
def init(p):
print('Host name: ',p.get_name())
干杯, / Nas