Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Show more📈 Analytical overview of Telegram channel Python | Вопросы собесов
Channel Python | Вопросы собесов (@python_easy_ru) in the Russian language segment is an active participant. Currently, the community unites 12 637 subscribers, ranking 9 918 in the Technologies & Applications category and 51 142 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 12 637 subscribers.
According to the latest data from 14 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -107 over the last 30 days and by 0 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 6.11%. Within the first 24 hours after publication, content typically collects 4.23% reactions from the total number of subscribers.
- Post reach: On average, each post receives 772 views. Within the first day, a publication typically gains 534 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 3.
- Thematic interests: Content is focused on key topics such as ставь, модуль, строка, docker, alice.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Thanks to the high frequency of updates (latest data received on 15 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
type() можно узнать тип любого объекта.
x = 10
print(type(x)) # <class 'int'>
🟠Проверка наличия атрибутов и методов
Функции hasattr(), getattr() и setattr() позволяют проверять и манипулировать атрибутами объектов.
class MyClass:
def __init__(self, value):
self.value = value
obj = MyClass(5)
# Проверка наличия атрибута
print(hasattr(obj, 'value')) # True
# Получение значения атрибута
print(getattr(obj, 'value')) # 5
# Установка значения атрибута
setattr(obj, 'value', 10)
print(getattr(obj, 'value')) # 10
🟠Исследование структуры класса
Модуль inspect предоставляет функции для получения информации о классах, методах и функциях.
import inspect
class MyClass:
def method(self):
pass
# Получение всех методов класса
methods = inspect.getmembers(MyClass, predicate=inspect.isfunction)
print(methods) # [('method', <function MyClass.method at 0x...>)]
🟠Список атрибутов и методов объекта
Встроенная функция dir() возвращает список всех атрибутов и методов объекта.
class MyClass:
def method(self):
pass
obj = MyClass()
print(dir(obj))
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
# '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
# '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'method']
🟠Работа с модулем `inspect`
Модуль inspect предоставляет функции для получения информации о живых объектах, включая функции, методы, классы и модули.
import inspect
def my_function():
pass
# Получение информации о функции
print(inspect.getmembers(my_function))
🚩Плюсы и минусы
➕Гибкость
Позволяет писать более общие и гибкие функции, которые могут работать с различными типами данных.
➕Отладка и тестирование
Облегчает отладку и тестирование кода, предоставляя средства для анализа объектов и их состояния.
➖Сложность
Может сделать код более сложным для понимания и сопровождения.
➖Производительность
Интроспекция может повлиять на производительность, особенно при частом использовании в критически важных участках кода.
Ставь 👍 и забирай 📚 Базу знанийid = models.AutoField(primary_key=True)
🟠Поле CharField
Поле для хранения строк с фиксированной максимальной длиной.
name = models.CharField(max_length=100)
🟠Поле TextField
Поле для хранения длинных текстов.
description = models.TextField()
🟠Поле IntegerField
Поле для хранения целых чисел.
age = models.IntegerField()
🟠Поле FloatField
Поле для хранения чисел с плавающей запятой.
price = models.FloatField()
🟠Поле BooleanField
Поле для хранения булевых значений (True/False).
is_active = models.BooleanField(default=True)
🟠Поле DateTimeField
Поле для хранения даты и времени.
created_at = models.DateTimeField(auto_now_add=True)
🟠Поле ForeignKey
Поле для создания связи "многие к одному" с другой моделью.
author = models.ForeignKey('Author', on_delete=models.CASCADE)
🟠Поле ManyToManyField
Поле для создания связи "многие ко многим" с другой моделью.
categories = models.ManyToManyField('Category')
🟠Поле OneToOneField
Поле для создания связи "один к одному" с другой моделью.
profile = models.OneToOneField('Profile', on_delete=models.CASCADE)
Ставь 👍 и забирай 📚 Базу знанийManager), чтобы добавить дополнительные методы для выполнения более сложных запросов к базе данных. Менеджеры используются для работы с наборами запросов (QuerySets) и предоставляют интерфейс для выполнения операций с базой данных.
🚩Зачем использовать кастомный менеджер модели?
🟠Повторное использование кода
Вынесение часто используемых запросов в методы менеджера позволяет избежать дублирования кода.
🟠Организация логики запросов
Логика сложных запросов инкапсулируется в методы менеджера, делая код моделей и представлений более чистым и удобочитаемым.
🟠Расширение функциональности
Добавление новых методов к менеджеру позволяет выполнять специфичные для приложения операции с данными.
🚩Пример создания кастомного менеджера модели
1⃣Создание кастомного менеджера
from django.db import models
from django.utils import timezone
class BookManager(models.Manager):
def by_author(self, author_name):
return self.filter(author__name=author_name)
def published_recently(self):
one_month_ago = timezone.now() - timezone.timedelta(days=30)
return self.filter(publication_date__gte=one_month_ago)
2⃣Использование кастомного менеджера в модели
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
publication_date = models.DateTimeField()
# Подключение кастомного менеджера
objects = BookManager()
3⃣Пример использования кастомного менеджера
# Получение книг по автору
books_by_author = Book.objects.by_author('John Doe')
for book in books_by_author:
print(book.title)
# Получение книг, опубликованных за последний месяц
recent_books = Book.objects.published_recently()
for book in recent_books:
print(book.title)
Ставь 👍 и забирай 📚 Базу знанийclass User:
def __init__(self, name, email):
self.name = name
self.email = email
def save(self):
# Сохранение данных пользователя в базу данных
print(f"Saving user {self.name} to the database.")
def send_welcome_email(self):
# Отправка приветственного сообщения на электронную почту
print(f"Sending welcome email to {self.email}.")
🚩Пример соблюдения
Для соблюдения принципа SRP разделим класс User на два отдельных класса: один для управления данными пользователя, другой для отправки сообщений электронной почты.
class User:
def __init__(self, name, email):
self.name = name
self.email = email
class UserRepository:
def save(self, user):
# Сохранение данных пользователя в базу данных
print(f"Saving user {user.name} to the database.")
class EmailService:
def send_welcome_email(self, user):
# Отправка приветственного сообщения на электронную почту
print(f"Sending welcome email to {user.email}.")
# Использование классов
user = User("Alice", "alice@example.com")
user_repository = UserRepository()
email_service = EmailService()
user_repository.save(user)
email_service.send_welcome_email(user)
🚩Плюсы
➕Упрощение кода
Код становится проще для понимания, так как каждый класс выполняет только одну задачу.
➕Улучшение тестируемости
Легче писать тесты для классов, которые имеют одну ответственность.
➕Повышение гибкости
Проще вносить изменения в один аспект системы, не затрагивая другие.
➕Улучшение повторного использования
Классы, реализующие одну задачу, могут быть повторно использованы в других частях системы или в других проектах.
Ставь 👍 и забирай 📚 Базу знанийnpx create-next-app@latest my-isomorphic-app
cd my-isomorphic-app
npm run dev
Создание страницы с серверным рендерингом
// pages/index.js
import React from 'react';
const Home = ({ message }) => (
<div>
<h1>{message}</h1>
</div>
);
export async function getServerSideProps() {
return {
props: {
message: 'Hello from the server!',
},
};
}
export default Home;
Ставь 👍 и забирай 📚 Базу знаний