如何覆盖自定义类的__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 

但是很明显这并没有奏效。

我的问题是可以这样做,而不需要从父类复制代码,什么是最可靠的方法来重用可用性的继承代码。

+2

也许是一个更好的主意移动'矩形.__ iter__'的实施功能('_iter_as_rect'?),你可以明确地重用。 – 2016-11-25 10:46:10

如下你可以这样做:

class Block(Rect): 
    def __iter__(self): 
     for p in super(Block, self).__iter__(): 
      yield p + self.offset