Дескрипторы — это объекты, которые управляют доступом к атрибутам других классов через методы
__get__, __set__ и __delete__.Они лежат в основе property, @staticmethod, @classmethod и ORM вроде Django.
class Celsius:
def __get__(self, instance, owner):
return instance._temp
def __set__(self, instance, value):
if value < -273.15:
raise ValueError("Температура ниже абсолютного нуля!")
instance._temp = value
class Temperature:
temp = Celsius()
t = Temperature()
t.temp = 25
print(t.temp) # 25
📌 Дескрипторы — это низкоуровневая магия, на которой построен весь механизм Python-свойств.
Please open Telegram to view this post
VIEW IN TELEGRAM
Генераторы в Python создают значения "на лету", без хранения всего списка в памяти.
Это делает их идеальными для работы с большими объёмами данных и потоками
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
gen = fibonacci()
for _ in range(5):
print(next(gen))
# 0 1 1 2 3
📌 Здесь yield превращает функцию в генератор, который "запоминает" состояние между вызовами.
Please open Telegram to view this post
VIEW IN TELEGRAM