CodeQL 文档

__init__ 方法返回值

ID: py/explicit-return-in-init
Kind: problem
Security severity: 
Severity: error
Precision: very-high
Tags:
   - reliability
   - correctness
Query suites:
   - python-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

类的 __init__ 方法用于初始化新对象,而不是创建对象。因此,它不应返回任何值。返回 None 是正确的,因为不会出现运行时错误,但这表明返回值是有意义的,而实际上并非如此。

建议

return expr 语句转换为简单的 return 语句,或者如果它位于方法的末尾,则完全省略它。

示例

在本例中,__init__ 方法尝试返回新创建的对象。这是一个错误,应该删除 return 方法。

class ExplicitReturnInInit(object):
    def __init__(self, i):
        self.i = i
        return self

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私