【问题标题】:Pylint raise-missing-from皮林特提高失踪
【发布时间】:2020-12-23 14:13:18
【问题描述】:

我在这段代码(来自https://www.django-rest-framework.org/tutorial/3-class-based-views/)上有一条pylint消息(w0707):

class SnippetDetail(APIView):
    """
    Retrieve, update or delete a snippet instance.
    """
    def get_object(self, pk):
        try:
            return Snippet.objects.get(pk=pk)
        except Snippet.DoesNotExist:
            raise Http404

消息是:
Consider explicitly re-raising using the 'from' keyword
我不太明白如何解决问题。
提前感谢您的帮助

【问题讨论】:

标签: python pylint


【解决方案1】:

上面对您的问题的评论中的链接概述了问题并提供了解决方案,但为了清楚起见那些像我一样直接登陆此页面的人,而不必转到另一个线程,阅读并获得上下文,这是您的具体问题的答案:

TL;DR;

这可以简单地通过将您正在“排除”的异常别名并在您的第二次加注中引用它来解决。

使用上面的代码 sn-p,查看底部两行,我添加了“插入符号”来表示我添加的内容。

class SnippetDetail(APIView):
    """
    Retrieve, update or delete a snippet instance.
    """
    def get_object(self, pk):
        try:
            return Snippet.objects.get(pk=pk)
        except Snippet.DoesNotExist as snip_no_exist:
#                                   ^^^^^^^^^^^^^^^^
            raise Http404 from snip_no_exist
#                         ^^^^^^^^^^^^^^^^^^

注意:别名可以是任何格式正确的字符串。

【讨论】:

  • 这解释了如何解决它,但不是为什么。带有/不带有“from”类的回溯几乎是相同的。而且我看不到使用“from”语句的附加值。是否有一个技术的理由来强化使用“from”的论点?
  • 下面的文章很好地解释了原因:stefan.sofa-rockers.org/2020/10/28/raise-from 归结为异常是如何呈现的——使用了什么措辞。
  • 正确,它确实如此 - 这就是答案的意图,作为 TLDR 对那些像我一样在谷歌的第一个结果上点击此页面并希望快速回答​​的人。对于那些想要背后的技术原因的人来说,问题评论上的链接可以很好地做到这一点。 (stackoverflow.com/questions/24752395/python-raise-from-usage)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 2022-06-14
相关资源
最近更新 更多