class Meta(type):
def __new__(mcs, name, bases, dct=None):
if not dct:
dct = {}
return super().__new__(mcs, name, bases, dct)
def __init__(self, name, bases, dct):
pass
Meta('NewClassName', tuple())
выдает
type.__new__() takes exactly 3 arguments (2 given)
Мне в голову не пришло ничего лучше:
class Meta(type):
def __new__(mcs, name, bases, *args, **kwargs):
if not args and not kwargs:
args = (dict(),)
return super().__new__(mcs, name, bases, *args)
def __init__(self, name, bases, *args, **kwargs):
pass
Meta('NewClassName', tuple())
Вопрос: можно ли сделать это более кратко?