Это может пригодиться для метапрограммирования, генерации моделей, DSL, автотестов и многого другого.
# Создаем класс динамически MyDynamicClass = type( 'MyDynamicClass', # имя класса (object,), # родительские классы {'x': 42, 'hello': lambda self: f'Hello, x = {self.x}'} # атрибуты и методы )
obj = MyDynamicClass() print(obj.hello()) # Hello, x = 42
🔥 Что тут происходит?
type() в обычном использовании возвращает тип объекта.
Но если передать три аргумента, он создаёт новый класс.
Мы задали имя, базовые классы и словарь атрибутов.
💡 Это то, что делает Python "Pythonic" — классы это тоже объекты, и ты можешь создавать их на лету.
Это может пригодиться для метапрограммирования, генерации моделей, DSL, автотестов и многого другого.
# Создаем класс динамически MyDynamicClass = type( 'MyDynamicClass', # имя класса (object,), # родительские классы {'x': 42, 'hello': lambda self: f'Hello, x = {self.x}'} # атрибуты и методы )
obj = MyDynamicClass() print(obj.hello()) # Hello, x = 42
🔥 Что тут происходит?
type() в обычном использовании возвращает тип объекта.
Но если передать три аргумента, он создаёт новый класс.
Мы задали имя, базовые классы и словарь атрибутов.
💡 Это то, что делает Python "Pythonic" — классы это тоже объекты, и ты можешь создавать их на лету.
Some Telegram Channels content management tips Avoid compound hashtags that consist of several words. If you have a hashtag like #marketingnewsinusa, split it into smaller hashtags: “#marketing, #news, #usa. Unlimited number of subscribers per channel During a meeting with the president of the Supreme Electoral Court (TSE) on June 6, Telegram's Vice President Ilya Perekopsky announced the initiatives. According to the executive, Brazil is the first country in the world where Telegram is introducing the features, which could be expanded to other countries facing threats to democracy through the dissemination of false content. “[The defendant] could not shift his criminal liability,” Hui said.
from us