Zdaję sobie sprawę, że jest późno i dlatego już sam prawdopodobnie odpowiedziałeś na to pytanie.
Po pierwsze, wydaje się, że źle rozumiesz argument kwds
z types.new_class
; to argumenty klasa słów kluczowych, np
class MyMeta(type):
def __new__(metacls, name, bases, attrs, **config):
print(config)
return super().__new__(metacls, name, bases, attrs)
def __init__(cls, name, bases, attrs, **config):
super().__init__(name, bases, attrs)
class SomeCls(metaclass=MyMeta, debug=True):
pass
>> {'debug': True}
jest analogiczne do (bez nadruku)
SomeCls = types.new_class("SomeCls",(), {'debug':True})
te meta-argumenty są przydatne podczas konfigurowania meta-klas.
Nie jestem do końca pewien, dlaczego new_class
został zaprojektowany, aby akceptować bezpośrednio wywoływanego kontra dict, ale podejrzewam, że był to unikalny niejawny stan współdzielony między "nowymi" klasami, które nie dziedziczyły między sobą.