为什么我会用@property命中递归限制?

时间:2014-05-19 20:47:04

标签: python python-2.7

我有一个属性,当不应该有任何递归时,它会一直达到最大递归限制。我没有_ init _方法,因此我根本没有初始化这些变量。我宁愿不覆盖init。

@property
def key(self):
    if not hasattr(self, 'key'):
        self._key = self.s3_bucket.get_key(self.key_path)
    return self._key

2 个答案:

答案 0 :(得分:2)

hasattr尝试访问属性key,例如打电话给酒店。这导致无限递归。

你可能想写hasattr(self, '_key')

答案 1 :(得分:1)

我认为您正在尝试if not hasattr(self, "_key")。否则hasattr(self, "key")将调用该属性,该属性将调用该属性,该属性将调用该属性,该属性将... ....