为什么我用getattr()而不是__dict __ []进行无限递归?

贾普·乔里斯·文斯(Jaap Joris Vens)

我正在尝试实现一个自定义Django模型字段(受此博客文章启发),尽管我的代码运行良好,但以下代码行吸引了我:

value = instance.__dict__[self.field_name]

在我看来,这只是一个丑陋的电话方式getattr()因此,我将此行更改为以下内容:

value = getattr(instance, self.field_name)

我希望代码可以运行相同的代码。事实并非如此,因为现在我遇到了无限递归错误:

RuntimeError at /admin/testapp/testmodel/
maximum recursion depth exceeded

为什么在使用时会得到无限递归getattr(),而在使用时却没有__dict__[]

--

编辑:这是链接的博客文章中的示例模型定义:

from django.db import models

class Bookmark(models.Model):
    url = models.URLField()
同义词

getattr尝试以任何可能的方式获取属性。这包括呼叫__get__如果在getattr调用的函数中使用getattr(具有相同的参数),则将以无限循环结束。直接访问可__dict__避免此“问题”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这种无限递归?

来自分类Dev

递归函数-为什么不无限循环?

来自分类Dev

我的递归函数不在无限循环中。为什么?

来自分类Dev

__getattr __()的无限递归-但是为什么它甚至被调用一次?

来自分类Dev

如何进行无限递归?

来自分类Dev

为什么我的.bat文件进行无限循环?

来自分类Dev

为什么以下代码会导致无限递归?

来自分类Dev

为什么命令“ xterm xterm”会创建无限递归?

来自分类Dev

为什么以下代码会导致无限递归?

来自分类Dev

为什么递归函数“无限”循环返回相同的数字

来自分类Dev

为什么这个递归示例给我一个无限循环?

来自分类常见问题

在中间表上与Jackson进行无限递归

来自分类常见问题

避免使用mfix进行无限递归

来自分类Dev

在python中使用lambda进行无限递归

来自分类Dev

使用std :: move进行无限递归

来自分类Dev

为什么Python不会进行大量递归?

来自分类Dev

为什么在进行递归时返回 None ?

来自分类Dev

为什么我用此React代码遇到无限循环?

来自分类Dev

为什么用“ Is”而不是“ IsNot”进行编译?

来自分类Dev

无限循环和无限递归调用之间有什么区别?

来自分类Dev

为什么下面的程序会进行无限循环?

来自分类Dev

为什么不是尾递归?

来自分类Dev

为什么Scala使用一会而不是使用`find`进行递归

来自分类Dev

Erlang:为什么使用递归+反向而不是map来对List进行操作最快?

来自分类Dev

为什么在循环开始时调用requestAnimationFrame不会导致无限递归?

来自分类Dev

为什么(递归地)调用自身的成员方法不会进入无限循环?

来自分类Dev

在这种情况下,为什么从namedtuple继承会导致无限递归?

来自分类Dev

为什么必须要有缺点才能防止无限递归

来自分类Dev

使用惰性val的Scala线性化,为什么要无限递归?

Related 相关文章

  1. 1

    为什么这种无限递归?

  2. 2

    递归函数-为什么不无限循环?

  3. 3

    我的递归函数不在无限循环中。为什么?

  4. 4

    __getattr __()的无限递归-但是为什么它甚至被调用一次?

  5. 5

    如何进行无限递归?

  6. 6

    为什么我的.bat文件进行无限循环?

  7. 7

    为什么以下代码会导致无限递归?

  8. 8

    为什么命令“ xterm xterm”会创建无限递归?

  9. 9

    为什么以下代码会导致无限递归?

  10. 10

    为什么递归函数“无限”循环返回相同的数字

  11. 11

    为什么这个递归示例给我一个无限循环?

  12. 12

    在中间表上与Jackson进行无限递归

  13. 13

    避免使用mfix进行无限递归

  14. 14

    在python中使用lambda进行无限递归

  15. 15

    使用std :: move进行无限递归

  16. 16

    为什么Python不会进行大量递归?

  17. 17

    为什么在进行递归时返回 None ?

  18. 18

    为什么我用此React代码遇到无限循环?

  19. 19

    为什么用“ Is”而不是“ IsNot”进行编译?

  20. 20

    无限循环和无限递归调用之间有什么区别?

  21. 21

    为什么下面的程序会进行无限循环?

  22. 22

    为什么不是尾递归?

  23. 23

    为什么Scala使用一会而不是使用`find`进行递归

  24. 24

    Erlang:为什么使用递归+反向而不是map来对List进行操作最快?

  25. 25

    为什么在循环开始时调用requestAnimationFrame不会导致无限递归?

  26. 26

    为什么(递归地)调用自身的成员方法不会进入无限循环?

  27. 27

    在这种情况下,为什么从namedtuple继承会导致无限递归?

  28. 28

    为什么必须要有缺点才能防止无限递归

  29. 29

    使用惰性val的Scala线性化,为什么要无限递归?

热门标签

归档