О работе с метакласами по порядку:
1)Простой пример создания метакласса:
....
# coding=utf-8
class AttributeInitType(type):
def __call__(self, *args, **kwargs):
"""Вызов класса при котором создается новый объект. """
#создаем сам объект
obj = type.__call__(self, *args)
#добавляем нашему классу переданные атрибуты
for name in kwargs:
setattr(obj, name, kwargs[name])
# вернем готовый объект
return obj