Как работает 
Метод
✅ Пример:
🔹 Зачем нужно?
⚡️
  getitem в Python?Метод
getitem позволяет обращаться к объектам класса по индексу или ключу, как к спискам или словарям.✅ Пример:
class CustomList:
def init(self, data):
self.data = data
def getitem(self, index):
return self.data[index] # Позволяет использовать obj[index]
nums = CustomList([10, 20, 30])
print(nums[1]) # 20
🔹 Зачем нужно?
 • Позволяет настроить доступ к элементам объекта. • Делает объекты итерируемыми (например, в for-циклах). • Помогает создавать свои структуры данных, работающие как списки или словари.⚡️
getitem делает объекты гибкими и удобными в использовании, улучшая читаемость кода!Что выведет код?
  Anonymous Quiz
    34%
    [2, 3, 4]
      
    41%
    deque([2, 3, 4])
      
    16%
    deque([1, 2, 3, 4])
      
    9%
    Ошибка выполнения
      
    🏗 Как работает 
Метод
✅ Пример:
🔹 Зачем нужно?
⚡️ Используйте
  call в Python?Метод
call позволяет вызывать экземпляр класса как функцию. Если этот метод определён в классе, объект можно использовать как obj().✅ Пример:
class Multiplier:
def init(self, factor):
self.factor = factor
def call(self, value):
return value * self.factor
double = Multiplier(2)
print(double(5)) # 10
🔹 Зачем нужно?
 • Позволяет создавать объекты-функции. • Удобно для конфигурируемых вычислений (например, замыканий). • Улучшает читаемость, убирая лишние .method() вызовы.⚡️ Используйте
call, если хотите, чтобы объект вёл себя как функция!⚡️ Как работает 
Декоратор
✅ Пример:
🔹 Зачем нужен?
⚡️ Используйте
  @staticmethod в Python?Декоратор
@staticmethod превращает метод класса в обычную функцию внутри класса, которая не получает ссылку на экземпляр (self) или класс (cls).✅ Пример:
class MathUtils:
@staticmethod
def add(x, y):
return x + y
print(MathUtils.add(3, 5)) # 8
🔹 Зачем нужен?
 • Используется, когда метод не зависит от состояния экземпляра или класса. • Делает код логичнее, если метод просто выполняет действие, связанное с классом. • Упрощает структуру, так как не требует создания объекта для вызова.⚡️ Используйте
@staticmethod, если метод не работает с self или cls, но логически относится к классу!Что выведет код?
  Anonymous Quiz
    39%
    [(1, 2), (1, 3), (2, 3)]
      
    22%
    [(1, 2), (2, 3), (3, 1)]
      
    24%
    [(1, 2), (1, 3), (2, 3), (3, 1)]
      
    14%
    Ошибка выполнения
      
    👍1
  🏷 Что такое 
✅ Пример:
🔹 Зачем использовать?
⚡️
  functools.lru_cache и зачем он нужен?functools.lru_cache — это декоратор для автоматического кэширования результатов функций. Он ускоряет выполнение, избегая повторных вычислений.✅ Пример:
from functools import lru_cache
@lru_cache(maxsize=100) # Кэшируем до 100 результатов
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
print(fib(10)) # 55 (значительно быстрее благодаря кэшу)
🔹 Зачем использовать?
 • Ускоряет повторяющиеся вычисления. • Уменьшает нагрузку на процессор при рекурсивных вызовах. • Экономит память благодаря ограничению maxsize.⚡️
lru_cache особенно полезен для функций с повторяющимися входными данными!Как работает itertools.cycle в Python?
✅ Пример:
🔹 Зачем использовать?
  itertools.cycle создаёт бесконечный итератор, который зацикливает последовательность, перезапуская её с начала после завершения.✅ Пример:
from itertools import cycle
colors = ["red", "green", "blue"]
color_cycle = cycle(colors)
for _ in range(5):
print(next(color_cycle)) # red → green → blue → red → green
🔹 Зачем использовать?
 • Повторение элементов списка без переписывания вручную. • Автоматическое зацикливание без индексов. • Полезно в анимациях, смене тем, бесконечных процессах.itertools.cycle — мощный инструмент для циклических операций без лишнего кода.Что выведет код?
  Anonymous Quiz
    55%
    Alice 30
      
    23%
    ('Alice', 30)
      
    10%
    ['Alice', 30]
      
    13%
    Ошибка выполнения
      
    🔄 Как работает 
✅ Пример:
Обычно для объединения списков используют
  itertools.chain в Python?itertools.chain позволяет объединять несколько итерируемых объектов в один, не создавая новых списков. Это экономит память и делает код чище.✅ Пример:
from itertools import chain
list1 = [1, 2, 3]
list2 = [4, 5, 6]
for num in chain(list1, list2):
print(num) # 1 2 3 4 5 6
Обычно для объединения списков используют
+, но это создаёт новый список в памяти.
chain❓ Что делает метод 
Метод
✅ Пример использования:
В отличие от
new в Python и когда его использовать?Метод
new отвечает за создание нового экземпляра класса перед его инициализацией в init. Он используется в случаях, когда нужно контролировать процесс создания объекта, например, в синглтонах или при наследовании от неизменяемых типов (int, str, tuple).✅ Пример использования:
class Singleton:
_instance = None
def new(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super().new(cls)
return cls._instance
obj1 = Singleton()
obj2 = Singleton()
print(obj1 is obj2) # True (оба объекта — одна и та же ссылка)
В отличие от
init, new контролирует сам процесс создания объекта. Полезен для ограничения числа экземпляров и работы с неизменяемыми классами.👍1
  Что выведет код?
  Anonymous Quiz
    39%
    Person(name='Alice', age=30)
      
    28%
    ("Alice", 30)
      
    28%
    {'name': 'Alice', 'age': 30}
      
    4%
    Ошибка выполнения
      
    🔍 Как работает 
В Python есть два специальных декоратора для методов класса:
✅ Пример:
Используйте
staticmethod vs classmethod в Python?В Python есть два специальных декоратора для методов класса:
@staticmethod и @classmethod. Они позволяют работать без создания экземпляра, но имеют ключевые различия.✅ Пример:
class Example:
class_attr = "Hello"
@staticmethod
def static_method():
return "I'm a static method"
@classmethod
def class_method(cls):
return f"Class method: {cls.class_attr}"
print(Example.static_method()) # I'm a static method
print(Example.class_method()) # Class method: Hello
@staticmethod ведёт себя как обычная функция внутри класса, не имея доступа к атрибутам класса или экземпляра. @classmethod, наоборот, получает ссылку на класс (cls) и может изменять его атрибуты.Используйте
@staticmethod для независимых функций, а @classmethod, когда нужно работать с самим классом.❤1
  ⚙️ Как работает metaclass в Python?
В Python метаклассы управляют созданием классов, так же как классы управляют созданием объектов. Они позволяют автоматизировать и настраивать процесс создания классов.
✅ Пример:
Метаклассы позволяют добавлять атрибуты, проверять код, изменять поведение классов перед их созданием.
Это мощный инструмент, но его стоит использовать только при необходимости, например, в ORM, фреймворках и API.
  В Python метаклассы управляют созданием классов, так же как классы управляют созданием объектов. Они позволяют автоматизировать и настраивать процесс создания классов.
✅ Пример:
class Meta(type):
def new(cls, name, bases, dct):
dct["custom_attr"] = 42
return super().new(cls, name, bases, dct)
class MyClass(metaclass=Meta):
pass
print(MyClass.custom_attr) # 42
Метаклассы позволяют добавлять атрибуты, проверять код, изменять поведение классов перед их созданием.
Это мощный инструмент, но его стоит использовать только при необходимости, например, в ORM, фреймворках и API.
