运行时错误:调用Python对象时超过最大递归深度,获取数据库中的多边形点

0 投票
1 回答
3242 浏览
提问于 2025-04-18 15:44

我正在尝试在用户点击谷歌地图时绘制存储的多边形点。我使用的是Postgres数据库。我已经成功地将多边形存储到数据库中。当我尝试自动绘制多边形点时,出现了递归错误。以下是我的代码:

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 个回答

1

你有一个列和一个属性,名字都是 area

area = Column(Geometry('Polygon'))

# ...

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

后者替代了前者。因此,当你在 self.getPoly() 中访问 self.area 时,它使用的是这个 属性,而这个属性又会再次调用 self.getPoly()

如果你想在 getPoly() 方法中使用这个列的话,你需要把列或者属性的名字改一下。

撰写回答