Python中文
首页
教程
问答
标签
搜索
登录
注册
在将方法作为类外的对象传递时,是否可以保持方法的“边界”
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试编写一个库,它将从多个服务端点向容器注册任意服务调用列表。我打算在为每个服务编写的类中实现服务调用。在将服务类中的方法注册到容器时,是否有办法保持这些方法的有界性(这样它们仍然可以访问其所属对象实例的实例数据),或者我必须注册整个对象,然后在容器类中使用<code>__getattr__</code>或类似的方法编写某种传递来访问实例上下文中的方法吗?你知道吗</p> <p>容器:</p> <pre><code>class ServiceCalls(object): def __init__(self): self._service_calls = {} def register_call(self, name, call): if name not in self._service_calls: self._service_calls[name] = call def __getattr__(self, name): if name in self._service_calls: return self._service_calls[name] </code></pre> <p>服务:</p> <pre><code>class FooSvc(object): def __init__(self, endpoint): self.endpoint = endpoint def fooize(self, *args, **kwargs): #call fooize service call with args/kwargs utilizing self.endpoint def fooify(self, *args, **kwargs): #call fooify service call with args/kwargs utilizing self.endpoint class BarSvc(object): def __init__(self, endpoint): self.endpoint = endpoint def barize(self, *args, **kwargs): #call barize service call with args/kwargs utilizing self.endpoint def barify(self, *args, **kwargs): #call barify service call with args/kwargs utilizing self.endpoint </code></pre> <p>实施代码:</p> <pre><code>foosvc = FooSvc('fooendpoint') barsvc = BarSvc('barendpoint') calls = ServiceCalls() calls.register('fooize', foosvc.fooize) calls.register('fooify', foosvc.fooify) calls.register('barize', barsvc.barize) calls.register('barify', barsvc.barify) calls.fooize(args) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我不理解这个用例,在我看来,实现这个的简单、惯用的方法就是传入一个对象。你知道吗</p> <p><strong>但是</strong>:程序到接口,而不是实现。只假设对象具有所需的方法,而不必触及内部或任何其他方法。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
2 回答
如何在乒乓球游戏中阻止球
1 回答
如何在乘法和模中不乘空间?
3 回答
如何在乘法和除以2个不同的数字之间进行交换?
1 回答
如何在也是数据一部分的单个字符上拆分大字符串
2 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
5 回答
如何在事件wxWidgets中传递自定义数据
7 回答
如何在事件中使用lambda i=i?
7 回答
如何在事件中心只接收最近的数据
8 回答
如何在事件发生之前保持云函数运行?
2 回答
如何在事件发生后使页面重定向到同一页面
4 回答
如何在事件回调之间保持python生成器的状态
3 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
1 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
8 回答
如何在事件处理程序中访问外部对象?
3 回答
如何在事件循环中将协程打包为正常函数?
7 回答
如何在事件循环之外运行协同程序?
2 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
6 回答
如何在事件文件中只保留一份摘要?
6 回答
如何在事件模板中添加事件
2 回答