ruff/docs/rules/yield-in-init.md

25 lines
No EOL
782 B
Markdown

# yield-in-init (PLE0100)
Derived from the **Pylint** linter.
## What it does
Checks for `__init__` methods that are turned into generators by the
inclusion of `yield` or `yield from` expressions.
## Why is this bad?
The `__init__` method is the constructor for a given Python class,
responsible for initializing, rather than creating, new objects.
The `__init__` method has to return `None`. By including a `yield` or
`yield from` expression in an `__init__`, the method will return a
generator object when called at runtime, resulting in a runtime error.
## Example
```python
class InitIsGenerator:
def __init__(self, i):
yield i
```
## References
* [`py-init-method-is-generator`](https://codeql.github.com/codeql-query-help/python/py-init-method-is-generator/)