RuntimeError:在从DB获取多边形点时调用Python对象时超出了最大递归深度

时间:2014-08-02 07:24:22

标签: python postgresql python-2.7 recursion

当用户点击地图时,我试图在谷歌地图上绘制存储的多边形点。我使用postgres数据库。我成功地将多边形存储到DB中。当我尝试自动绘制多边形点时,我得到一个递归错误。这是我的代码

class drawPolygon(Base):

    __tablename__ = "tbl_data_area"      

    id =  Column(Integer, nullable=False, primary_key=True)
    area = Column(Geometry('Polygon'))
    name = Column( Text )

    _poly  = None

    def getPoly(self):
        if not self._poly:
            self._poly = to_shape(self.area)//i get error here
        return self._poly

    def getAreaPoints(self):
        return self.getPoly().area
    area = property(getAreaPoints)          

我不知道self.area有什么不对。当self._poly = to_shape(self.area)行执行时,我得到此错误RuntimeError:调用Python对象时超出了最大递归深度。我很震惊。任何人都可以帮忙。

1 个答案:

答案 0 :(得分:1)

您同时拥有一个名为area的列和属性:

area = Column(Geometry('Polygon'))

# ...

def getAreaPoints(self):
    return self.getPoly().area
area = property(getAreaPoints)          

后者取代了前者。因此,self.getPoly()在访问self.area时会使用属性,并且该属性会再次调用self.getPoly()

如果要使用getPoly()方法中的列,请重命名列或属性。