Assume the following setup:
<code>class Foo:
def __init__(self) -> None:
self._x: str = ''
def get_x(self) -> str:
return self._x
class FooProxy(BaseProxy):
_exposed_ = ['get_x']
def get_x(self):
return self._callmethod('get_x')
class FooManager:
def __init__(self) -> None:
self._foos: list[Foo] = [Foo(), Foo()]
def indices(self):
return len(self._foos)
def get_foo(self, index: int):
return self._foos[index]
class FooManagerProxy(BaseProxy):
_exposed_ = ['get_foo', 'indices']
def indices(self):
return self._callmethod('indices') # OK
def get_foo(self, index: int):
return self._callmethod('get_foo', args=(index,)) # Want to return proxy ??
foo_manager: FooManager = FooManager()
def get_foo_manager():
return foo_manager
class MyManager(BaseManager):
pass
MyManager.register('get_foo_manager', get_foo_manager, FooManagerProxy)
</code>
<code>class Foo:
def __init__(self) -> None:
self._x: str = ''
def get_x(self) -> str:
return self._x
class FooProxy(BaseProxy):
_exposed_ = ['get_x']
def get_x(self):
return self._callmethod('get_x')
class FooManager:
def __init__(self) -> None:
self._foos: list[Foo] = [Foo(), Foo()]
def indices(self):
return len(self._foos)
def get_foo(self, index: int):
return self._foos[index]
class FooManagerProxy(BaseProxy):
_exposed_ = ['get_foo', 'indices']
def indices(self):
return self._callmethod('indices') # OK
def get_foo(self, index: int):
return self._callmethod('get_foo', args=(index,)) # Want to return proxy ??
foo_manager: FooManager = FooManager()
def get_foo_manager():
return foo_manager
class MyManager(BaseManager):
pass
MyManager.register('get_foo_manager', get_foo_manager, FooManagerProxy)
</code>
class Foo:
def __init__(self) -> None:
self._x: str = ''
def get_x(self) -> str:
return self._x
class FooProxy(BaseProxy):
_exposed_ = ['get_x']
def get_x(self):
return self._callmethod('get_x')
class FooManager:
def __init__(self) -> None:
self._foos: list[Foo] = [Foo(), Foo()]
def indices(self):
return len(self._foos)
def get_foo(self, index: int):
return self._foos[index]
class FooManagerProxy(BaseProxy):
_exposed_ = ['get_foo', 'indices']
def indices(self):
return self._callmethod('indices') # OK
def get_foo(self, index: int):
return self._callmethod('get_foo', args=(index,)) # Want to return proxy ??
foo_manager: FooManager = FooManager()
def get_foo_manager():
return foo_manager
class MyManager(BaseManager):
pass
MyManager.register('get_foo_manager', get_foo_manager, FooManagerProxy)
How can i return a FooProxy from the FooManagerProxy.get_foo function, so when calling that method from a client, i get a proxy for the foo object, instead of getting a copy of that object?