这是一个很好的Python练习吗?
import threading
import Queue
class Poppable(threading.Thread):
def __init__(self):
super(Poppable, self).__init__()
self._q = Queue.Queue()
# provide a limited subset of the Queue interface to clients
self.qsize = self._q.qsize
self.get = self._q.get
def run(self):
# <snip> -- do stuff that puts new items onto self._q
# this is why clients don't need access to put functionality
这种促进&#34;促进&#34;成员的功能直到包含类的界面违反了Python的样式或Zen?
主要是我试图将这种方法与更标准的方法进行对比,这种方法通常会涉及声明包装函数:
def qsize(self):
return self._q.qsize()
def get(self, *args):
return self._q.get(*args)
答案 0 :(得分:0)
我认为这不是特定于Python的。一般来说,这是一个很好的OOP练习。您只公开客户端需要知道的功能,隐藏所包含队列的内部。这是包装对象时的典型方法,完全符合最少知识原则。
如果客户必须致电self.qsize
,而不是self._q.qsize
,则无法轻松更改_q
使用不同数据类型的qsize
,如果没有 int [,] Y = new int [3,4] {
{0, 1, 2, 3} ,
{4, 5, 6, 7} ,
{8, 9, 10, 11}
};
方法这是以后需要的。因此,您的方法使对象对未来可能的更改更加开放。