[БЕЗ_ЗВУКА] [БЕЗ_ЗВУКА] В предыдущем видео мы с вами написали некоторую реализацию абстрактной фабрики для создания различных классов героев и снаряжения, которое соответствует каждому конкретному классу. Однако наш код получился довольно громоздким, с некоторыми повторяющимися участками и, в целом, не выглядящий как код на языке Python. Давайте попробуем изменить наш код при помощи механизма, называемого «класс метод», и сделать его более питоновским. Для начала избавимся от абстрактных классов. Теперь наша базовая абстрактная фабрика не будет наследоваться от класса ABC. Вместо абстрактных методов мы будем использовать классовые методы. Эти методы позволят пользоваться некоторыми функциями, специфичными для конкретного класса. Вместо параметра self в наших методах теперь будет передаваться класс, методы которого мы будем использовать. Давайте опишем эти самые методы вместо pass. Во всех методах мы возвращаем что‐то, return, Class, точка. В первом методе мы возвращаем героя, принадлежащего классу с определённым именем, во втором методе мы возвращаем оружие, в третьем методе мы возвращаем заклинание, spell. Теперь давайте попробуем создать фабрику нашего воина с использованием механизма класс метод. Объединим данные ячейки, и вот этот вот код мы просто удаляем. Почему мы его удаляем? Ну он у нас не нужен, у нас уже описано создание героя, оружия и заклинаний в нашем базовом классе. Осталось определить, из каких объектов надо будет создавать. Давайте соответствующие объекты поместим внутрь нашего класса и назовём их, чтоб у них были унифицированные названия. Это будет просто герой, специфичный для данного класса, тут он будет воином. Это будет просто оружие — для данного класса, для данной фабрики это будет Claymore. И это будет просто заклинание, Spell, которое для данного класса будет Power. Аналогично я поступил со всеми предыдущими фабриками, которые мы писали в предыдущем видео, это фабрика создания мага и фабрика создания убийцы. Просто выполним этот код, изменения абсолютно аналогичные. Наш метод create_hero совсем не меняется. Мы всё так же создаём персонажи с некоторым именем, мы ему так же создаём оружие, заклинание, добавляем это оружие, добавляем заклинание и возвращаем нашего героя. Убедимся, что наш код работает. Создадим мага при помощи фабрики мага. Как мы видим, он кастует фаербол и ударяет своих врагов посохом. Попробуем изменить и создадим, например, убийцу, Assassin. Теперь наш персонаж кастует невидимость и бьёт своих врагов кинжалом. Собственно, чего мы и добивались. Таким способом нам удалось взять и сделать наш код, который был достаточно громоздким и выглядел не очень красиво, гораздо более простым и читаемым. Механизм «класс метод» позволяет сделать код проще и лучше. [БЕЗ_ЗВУКА] [БЕЗ_ЗВУКА]