New submission from Ilya Kulakov <kulakov.i...@gmail.com>:

When superclass inherits from Generic, attributes set for a subclass are 
incorrectly propagated to its superclass.

Without Generic attribute access raises an exception:

    class X:
        def __init_subclass__(cls, **kwargs):
            super().__init_subclass__(**kwargs)
            cls.attr = 42

    class Y(X):
        pass

    Y.attr  # 42
    X.attr  # AttributeError

With Generic it does not:

    import typing

    T = typing.TypeVar('T')

    class X(typing.Generic[T]):
        def __init_subclass__(cls, **kwargs):
            super().__init_subclass__(**kwargs)
            cls.attr = 42

    class Y(X):
        pass

    Y.attr  # 42
    X.attr  # 42

----------
messages: 307182
nosy: Ilya.Kulakov
priority: normal
severity: normal
status: open
title: typing.Generic breaks __init_subclass__
type: behavior
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32162>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to