New submission from Hameer Abbasi <einstein.edi...@gmail.com>:
I may be completely misunderstanding here, but: here's a reproducible example: class MyMeta(type): def __new__(cls, *args, **kwargs): print('__new__', *args, **kwargs) super().__new__(cls, *args, **kwargs) def __init__(self, a): print('__init__', *args, **kwargs) super().__init__(*args, **kwargs) class A(metaclass=MyMeta): pass MyMeta('A', (), {'__module__': '__main__', '__qualname__': 'A'}) Output: __new__ A () {'__module__': '__main__', '__qualname__': 'A'} __new__ A () {'__module__': '__main__', '__qualname__': 'A'} Is this by design? ---------- components: Interpreter Core messages: 337079 nosy: Hameer Abbasi priority: normal severity: normal status: open title: type.__init__ called instead of cls.__init__ when inheriting from type. type: behavior versions: Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue36178> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com