0

我是Python菜鸟,3天前才开始,所以请帮助我:我有以下代码:

def parseWebContentAndUploadDAO(self,liSet): if not liSet: print "no element found" else: print len(liSet)

    almaProdList = deque() ;

    for item in liSet:

        loopProd = Alma.Alma();
        loopProd.id=item['id']
        loopProd.id=item['data-keyword']

        detailsUrlLink=  item.find('a', attrs={'class':'item gaProductDetailsLink'})['href']
        len(detailsUrlLink)
        print detailsUrlLink
        loopProd.detailsSiteURL  = detailsUrlLink

当我运行时,我看到 loopProd 设置器被永远调用,所以我是的,我得到了一个RuntimeError: maximum recursion depth exceeded错误。请告诉我,应该是什么问题,为什么这段代码一次又一次地调用我的设置器,直到我得到异常。

请查看 setter 在我的自定义类中:

@detailsSiteURL.setter
def detailsSiteURL(self,v):
    self.detailsSiteURL = v
4

1 回答 1

1

您不应该尝试设置您的设置器(您的设置器函数和变量需要不同的名称):

@detailsSiteURL.setter
def detailsSiteURL(self,v):
    self.detailsSiteURL = v # <---- same name as function!
         ^^^^^^^^^^^^^^

对于属性,您通常遵循此模式(请注意命名 getter/setter 方法foo并调用实际变量_foo):

class Something(object):
  def __init__(self, foo):
      self._foo = foo
  @property
  def foo(self):
      return self._foo
  @foo.setter
  def foo(self, value):
      self._foo = value
于 2013-09-14T22:02:33.687 回答