如何覆盖自定义类的__iter __()?
问题描述:
我想要做的是在子类中重用发电机如何覆盖自定义类的__iter __()?
class Rect(object):
...
def __iter__(self):
for y in xrange(self.tl.y, self.br.y + 1):
for x in xrange(self.tl.x, self.br.x + 1):
yield Point(x, y)
。我试过写点类似
class Block(Rect):
...
def __iter__(self):
for p in super(Block, self):
yield p + self.offset
但是很明显这并没有奏效。
我的问题是可以这样做,而不需要从父类复制代码,什么是最可靠的方法来重用可用性的继承代码。
答
如下你可以这样做:
class Block(Rect):
def __iter__(self):
for p in super(Block, self).__iter__():
yield p + self.offset
也许是一个更好的主意移动'矩形.__ iter__'的实施功能('_iter_as_rect'?),你可以明确地重用。 – 2016-11-25 10:46:10