问题是在选择应答器之前需要考虑这些参数。这是我目前为止的尝试。在
from responders import A, B, C
class RandomResponder(object)
def init(self, *args, *kwargs):
self.args = args
self.kwargs = kwargs
def __getattr__(self, name):
# pick a responder based on the args the function was called with
# I don't know how to do this part
# for sake of argument lets the args a function was called with lead me to pick responder A
r = A
responder = r(*self.args, **self.kwargs)
return responder.__getattr__(name)
预期效果是:
^{pr2}$我不会提前知道应答器A、B和C包含的所有函数
关于:
试试这个:
which()从选项中随机选择一个选项,而getattr使用which获取属性。在
编辑:事实上看起来你想要更像这样的东西。在
^{pr2}$这可以用lambda编写,但我还是这样写,这样会更清楚。在
当你这么做的时候
发生的情况是,按顺序:
在调用
__getattr__
时,您无法知道返回的对象将使用哪些参数来调用,或者即使它将被调用。。。在因此,为了获得您想要的行为,
^{pr2}$__getattr__
必须返回一个可调用的对象,该对象根据调用它的参数进行决策。例如相关问题 更多 >
编程相关推荐