This rule raises an issue when the ``++__init__++`` method of a class contains a `return` or a `yield` statement. == Why is this an issue? By contract, every Python function returns something, even if it is the ``++None++`` value, which can be returned implicitly by omitting the ``++return++`` statement, or explicitly. The ``++__init__++`` method is required to return ``++None++``. A ``++TypeError++`` will be raised if the ``++__init__++`` method either yields or returns any expression other than ``++None++``. While explicitly returning an expression that evaluates to ``++None++`` will not raise an error, it is considered bad practice. To fix this issue, make sure that the ``++__init__++`` method does not contain any return statement. === Code examples ==== Noncompliant code example [source,python,diff-id=1,diff-type=noncompliant] ---- class MyClass(object): def __init__(self): self.message = 'Hello' return self # Noncompliant: a TypeError will be raised ---- ==== Compliant solution [source,python,diff-id=1,diff-type=compliant] ---- class MyClass(object): def __init__(self): self.message = 'Hello' ---- == Resources === Documentation * https://docs.python.org/3/reference/datamodel.html#object.++__init__++[The ``++__init__++`` method] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message * Remove this yield statement. * Remove this return value. ''' == Comments And Links (visible only on this page) === relates to: S5654 === on 18 Mar 2015, 17:55:42 Ann Campbell wrote: -E0100: __init__ method is a generator -E0101: Explicit return in __init__ endif::env-github,rspecator-view[]