2016-12-19 18 views

Odpowiedz

0

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ą.

Powiązane problemy