gpt4 book ai didi

python - Pydev控制台: checking variable values seems to be causing code to execute unexpectedly

转载 作者:行者123 更新时间:2023-12-01 06:03:55 24 4
gpt4 key购买 nike

我正在尝试使用 Eclipse/Pydev 在 django 中逐步完成表单验证的整个过程。我得到了完全意想不到的结果。

parent_form = form_class(request.POST, initial=initial)
debug_type = type(parent_form._errors)
msg = _('created successfully') # <------- Set breakpoint here

这是我在控制台中摸索得到的结果。

debug_type
<type 'NoneType'>
type(parent_form._errors)
<class 'django.forms.util.ErrorDict'>

我不明白为什么这两个值不同;第一个值应该是“正确的”。

在django源代码中,存在一个名为parent_form.errors的东西(注意错误之前缺少前导下划线),它是parent_form的属性;获取该属性会运行一段代码,该代码会导致 _errors 从 None 变为 ErrorDict。但我没有收到parent_form.errors,我要求的是parent_form._errors。

PyDev 是否​​会在不询问的情况下评估parent_form.errors?如果是这样为什么?为什么我不能通过在parent_form.errors 的getter 中设置断点来捕获这种静默评估?

最佳答案

当您遇到断点并且 PyDev 填充变量 View (您可以在其中看到每个变量的值)时,它将对范围内的所有变量执行 dir() 操作,并为每个变量执行 getattr() 操作找到的变量(这对调试器的作用有一点简化,但已经很接近了)...

因此,它无法真正猜测某些变量是否会产生副作用...您可以尝试关闭变量 View 以检查它是否仅在实际请求变量时才这样做(尽管它可能是它要求一些东西,即使它是关闭的,不确定)。

关于python - Pydev控制台: checking variable values seems to be causing code to execute unexpectedly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9012193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com