__init__
方法是一个生成器¶
ID: py/init-method-is-generator
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- reliability
- correctness
Query suites:
- python-security-and-quality.qls
类的 __init__
方法用于初始化新对象,而不是创建它们。因此,它不应该返回任何值。在方法中包含 yield
表达式会将其变成生成器方法。调用它将返回一个生成器,从而导致运行时错误。
建议¶
__init__
方法中存在 yield
表达式表明逻辑错误,因此无法建议一般性的修复方法。
示例¶
在本例中,__init__
方法包含 yield 表达式。这在初始化器的上下文中不合理。
class InitIsGenerator(object):
def __init__(self, i):
yield i
参考资料¶
Python: The init method.