Вы можете сделать что-то вроде:
def Schema(*args, **kwargs):
def wrapped(cls):
class Schema(marshmallow.ModelSchema):
class Meta:
model = cls
cls.Schema = Schema
return cls
return wrapped
И тогда будет работать @Schema(nested=['serial_protocol'])
.
Как это работает, вы создаете функцию, которая принимает аргументы и возвращает декоратор. Оттуда декоратор работает как обычный Python декоратор.
@Schema(nested=['serial_protocol'])
class SerialInterface:
...
Декоратор переводится в:
SerialInterface = Schema(nested=['serial_protocol'])(SerialInterface)
Дополнительный совет, Используйте модуль functools.wraps
:) См. почему