Слайд 3Наследование
Простое наследование
Множественное наследование
![Наследование Простое наследование Множественное наследование](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1008000/slide-2.jpg)
Слайд 5Метаклассы
Метакласс - это то, что создаёт эти самые объекты или «фабрика классов»
Метакласс
![Метаклассы Метакласс - это то, что создаёт эти самые объекты или «фабрика классов» Метакласс Класс Объект](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1008000/slide-4.jpg)
Слайд 6Пример работы с метаклассами
#`type` - это класс, как `str` и `int`, от
![Пример работы с метаклассами #`type` - это класс, как `str` и `int`,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1008000/slide-5.jpg)
него тоже можно наследовать
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