(Впрочем, и связь с недавно вышедшей статьей Метаклассы в Objective-C отрицать не буду.)
Метаклассы в Smalltalk
(Впрочем, и связь с недавно вышедшей статьей Метаклассы в Objective-C отрицать не буду.)
Продолжаю серию публикаций Fil по CppCon 2017. В докладе представлены ранние наработки по добавлению рефлексии и кодогенерации в C++, а также по метаклассам, которые позволят генерировать части классов C++. В стандарт эти новшества попадут не ранее, чем в C++23.
6 февраля начинается очередной поток нашей школы Metaclass по курсам frontend и backend для начинающих.
После учебы мы всегда спрашиваем наших студентов о курсе: что было легко, что не очень, как знания с курса помогли в карьере. Сегодня о своём опыте расскажет недавний выпускник курса Начинающий React-разработчик Настя Жукова.
Привет!
6 февраля начинается очередной поток нашей школы Metaclass по курсам frontend и backend для начинающих.
После учебы мы всегда спрашиваем наших студентов о курсе: что было легко, что не очень, как знания с курса помогли в карьере. Сегодня о своем опыте расскажет недавний выпускник курса Начинающий Backend-разработчик на Python Иван Пакеев.
Привет, я Максим Павлов из KTS. Мы разрабатываем продукты в HRTech, EduTech и делаем кастомные IT-сервисы для бизнеса.
6 лет мы 2 раза в год проводим школу Metaclass и после неё нанимаем стажёров. За это время мы обучили 2600 человек, приняли на работу около 50. Рассказываю о том, как запустить свою школу, ориентированную на найм стажеров, и не облажаться.
Многие считают, что метапрограммирование в Python излишне усложняет код, но если использовать его правильно, то можно быстро и элегантно реализовать сложные паттерны проектирования. Помимо этого, такие известные Python-фреймворки, как Django, DRF и SQLAlchemy, используют метаклассы, чтобы обеспечить легкую расширяемость и простое переиспользование кода.
В этой статье расскажу, почему не стоит бояться использовать метапрограммирование в своих проектах и покажу, для каких задач оно подходит лучше всего. Еще больше о возможностях метапрограммирования можно узнать на курсе Advanced Python.
Мы продолжаем говорить о метапрограммировании в Python. При правильном использовании оно позволяет быстро и элегантно реализовывать сложные паттерны проектирования. В прошлой части этой статьи мы показали, как можно использовать метаклассы, чтобы изменять атрибуты экземпляров и классов.
Теперь посмотрим как можно изменять вызовы методов. Больше о возможностях метапрограммирования вы сможете узнать на курсе Advanced Python.
В своём выступлении на CppCon 2018 Herb Sutter представил общественности свои наработки по двум направлениям. Во-первых, это контроль времени жизни переменных (Lifetime), который позволит обнаруживать целые классы багов на этапе компиляции. Во-вторых, это обновлённый proposal по метаклассам, которые позволят избежать дублирования кода, один раз описывая поведение категории классов и потом подключая его к конкретным классам одной строчкой.
# один из способов создать новый класс
Dog = Class.new
# общепринятый способ создания класса
class Dog
# какая-то реализация собачьего поведения
end
Dog.class
=> Class
public class Test {
static {
//Write some code here
}
public static void main(String[] args) {
Integer a = 20;
Integer b = 20;
assert (a + b == 60);
}
}