New submission from Brian Petersen:
First time issue reporter here. I really love PEP 487, but I'm finding the new
__init_subclass__ functionality is not playing nicely with existing abstract
class functionality.
For example, taking the Quest example given in PEP 487 but simply adding
ABCMeta metaclass results in a runtime error:
```
class QuestBase(metaclass=abc.ABCMeta):
# this is implicitly a @classmethod (see below for motivation)
def __init_subclass__(cls, swallow, **kwargs):
cls.swallow = swallow
super().__init_subclass__(**kwargs)
class Quest(QuestBase, swallow="african"):
pass
print(Quest.swallow)
Traceback (most recent call last):
File "credentials.py", line 23, in <module>
class Quest(QuestBase, swallow="african"):
TypeError: __new__() got an unexpected keyword argument 'swallow'
```
----------
components: Library (Lib)
messages: 290641
nosy: Brian Petersen
priority: normal
severity: normal
status: open
title: PEP487 __init_subclass__ incompatible with abc.ABCMeta
versions: Python 3.6
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue29923>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com