Python 超过getter Django的最大递归深度

Python 超过getter Django的最大递归深度,python,django,recursion,django-models,attributes,Python,Django,Recursion,Django Models,Attributes,我有一些特定属性的自定义getter类: class Item(a, b, c, d, models.Model): title = Field() description = Field() a = Field() _custom_getter = ['title','description'] def __getattribute__(self, name): if name in self.custom_getter:

我有一些特定属性的自定义getter类:

class Item(a, b, c, d, models.Model):
     title = Field()
     description = Field()
     a = Field()
     _custom_getter = ['title','description']

     def __getattribute__(self, name):
         if name in self.custom_getter:
             return 'xxx'
         else:
             return super(Item, self).__getattribute__(name)
此代码在调用Python对象时超出了RunetimeError的最大递归深度 但当我使用这段代码时:

class Item(a, b, c, d, models.Model):
    title = Field()
    description = Field()
    a = Field()

    def __getattribute__(self, name):
        custom_getter = ['title','description']
        if name in custom_getter:
            return 'xxx'
        else:
            return super(Item, self).__getattribute__(name)

一切都是我想要的。我在第一段代码中的错误是什么?

因为当您执行
self.custom\u getter
时,会调用
\u getattribute\u
。您可以使用
self.\u dict\u
进行此操作。阅读更多


我使用
object.\uuuu getattribute.\uuuuu(self),\u custom\u getter')
而不是
self.\uu dict\uuuu[''.\ u custom\u getter']
因为它会产生相同的错误,但感谢这篇文章,我找到了解决方法。
class Item(a, b, c, d, models.Model):
     title = Field()
     description = Field()
     a = Field()
     custom_getter = ['title','description']

     def __getattribute__(self, name):
         if name in self.__dict__['custom_getter']:
             return 'xxx'
         else:
             return super(Item, self).__getattribute__(name)