Python Community
13.1K subscribers
1.24K photos
26 videos
15 files
713 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Дескрипторы

Они используются для изменения поведения атрибутов. То есть модификация получения, изменения, и удаления свойств класса.

Их основное отличие это методы __get__(obj, objtype), __set__(obj, value), __delete__(obj), которые используются для получения, изменения и удаления атрибута.

На самом деле, тема довольно сложная, но в документации есть отличное HowTo, которое описывает все особенности дескрипторов и их возможное применение.

#теория
⚡️ Задачка с собеседования | #Medium

Условие:

Вам нужно найти все числа внутри строки. Даже те, что находятся внутри слов.

Пример:

find_numbers('hello 42 I`m a 32') ➞ ['42', '32']
find_numbers('bla42bla') ➞ ['42']
find_numbers('33.33, 1234 1') ➞ ['33', '33', '1234', '1']

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ @staticmethod и @classmethod

Декораторы говорят о том, как будут другие объекты обращаться к методу.

@staticmethod обозначает метод статическим, то есть он никак не работает с экземпляром, а значит и не принимает self. Её можно вызывать без создания экземпляра.

@classmethod — метод, который привязан к классу, а не к экземпляру класса. Используется, когда вам нужен метод, не относящийся к экземпляру, но тем не менее привязанный к классу.

#теория
Что выведет код выше?
Anonymous Quiz
17%
0.3
36%
0.30000000000000004
40%
Ошибку
6%
Узанть ответ
⚡️ Так что же такое __new__?

Это статический метод, которая вызывается, когда мы пытаемся создать экземпляр класса. То есть пишем MySuperClass().

Она обязательно возвращает значение — тот самый экземпляр, который мы пытаемся создать.

Принимает она класс, который мы пытаемся создать и те же аргументы, что передаются __init__.

#теория
Что выведет код выше?
Anonymous Quiz
44%
True
28%
False
20%
Ошибку
8%
Узнать ответ
⚡️ Что быстрее, [] или list?

Ответить на этот вопрос поможет timeit. Он используется для измерения скорости выполнения каких-либо задач.

Чем же плох time? Во-первых, с ним неудобно. Во-вторых, на результат влияет огромное количество факторов, начиная загруженностью процессора и заканчивая сборщиком мусора.

Кстати, подробнее ответ на вопрос из названия разбирается в этой статье.

#миниурок #timeit
⚡️ Готовим объект к отправке на луну на сервер

Первым делом Python объект надо перевести в строку. Например, в JSON формат. Сделать это лучше всего с помощью marshmallow.

Установка: pip install marshmallow

Таким образом вам не нужно добавлять convert_to_json() в каждый класс, а достаточно просто настроить схему (Schema) с полями (fields) от marshmallow.

Кстати, так же за счёт схем можно переводить строку обратно в объект за счёт той же самой схемы, что мы ранее создали.

Но и не забываем про валидацию, с которой можно познакомиться в документации.

#миниурок #marshmallow
Что выведет код выше?
Anonymous Quiz
35%
1
22%
2
19%
3
14%
Ошибку
10%
Узнать ответ
⚡️ Правила документации кода

"""На этой строке обязательно должно быть краткое описание объекта. Кто он, что он делает и ради чего существует.

Вторая строка обязательно должна быть пустой. После неё идёт один или несколько абзацев более полного описания.
Вообще правила, описывающие документацию хранятся в PEP257.
"""

#теория
Что выведет код выше?
Anonymous Quiz
8%
3 4
27%
3 6
10%
2 3
41%
Ошибку
15%
Узнать ответ