Слайд 6
Пример работы с метаклассами
#`type` - это класс, как
`str` и `int`, от него тоже можно наследовать
class LowerAttrMetaClass(type):
def __new__(cls, name, bases, clsdict):
attrs = ((attr, value) for attr, value in clsdict.items() if not attr.startswith('__'))
uppercase_attr = dict((attr.lower(), value) for attr, value in attrs)
return type(name, bases, uppercase_attr)
class AttrControled(metaclass=LowerAttrMetaClass):
pass