gpt4 book ai didi

python - 如何在 Python 中创建对象集合代理?

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:16 24 4
gpt4 key购买 nike

我正在尝试创建一个对象集合代理,它可以做这样的事情:

class A:
def do_something():
# ...

class B:
def get_a():
return A()

class Proxy:
?

collection = [B(), B()]
proxy = Proxy(collection)

proxy.get_a().do_something()
# ^ for each B in collection get_a() and do_something()

实现此目标的最佳架构/策略是什么?

我想关键问题是,如何缓存 get_a() 的结果以便我可以代理 do_something()

注意我不希望 proxy.get_a().do_something() 返回任何有意义的东西,它只是应该做一些事情。

最佳答案

足够简单...您可能需要对其进行调整以进行更多检查

class A(object):
def do_something(self):
print id(self), "called"

class B(object):
def get_a(self):
return A()

class Proxy(object):
def __init__(self, objs):
self._objs = objs

def __getattr__(self, name):
def func(*args, **kwargs):
return Proxy([getattr(o, name)(*args, **kwargs) for o in self._objs])
return func

collection = [B(), B()]

proxy = Proxy(collection)
proxy.get_a().do_something()

结果:

4455571152 called
4455571216 called

关于python - 如何在 Python 中创建对象集合代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com