PYTHONL Telegram 4959
🖥 Динамическое создание классов через type

Это может пригодиться для метапрограммирования, генерации моделей, 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" — классы это тоже объекты, и ты можешь создавать их на лету.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍7🔥4



tgoop.com/pythonl/4959
Create:
Last Update:

🖥 Динамическое создание классов через type

Это может пригодиться для метапрограммирования, генерации моделей, 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" — классы это тоже объекты, и ты можешь создавать их на лету.

@pythonl

BY Python/ django


Share with your friend now:
tgoop.com/pythonl/4959

View MORE
Open in Telegram


Telegram News

Date: |

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


Telegram Python/ django
FROM American