Logo
TGCATALOG
Catálogo Selecciones Blog
Código en una sirena - Codificación Python

Código en una sirena - Codificación Python

Canal sobre programación en Python y otros idiomas. Explicaciones y códigos simples.

Sin valoraciones
317
26.10.2026
317
26.10.2026
Sin valoraciones
317
26.10.2026
Redirección segura vía bot
О канале

Canal sobre programación en Python y otros idiomas. Explicaciones y códigos simples.

Подписчиков 2,347
Тематика Tecnología
Язык Español
Ссылка t.me/napkincode

También te recomendamos

Kekaton AI  Voz en off y clon de voz
Kekaton AI Voz en off y clon de voz
Bot

bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.

Descripción

Recurso para aquellos interesados en la programación. Enfóquese en Python, pero también cubre otros temas.

Últimas publicaciones

Código en una sirena - Codificación Python
Código en una sirena - Codificación Python
🔒Открыть пост
и посмотреть медиа
Знаете ли вы, что __getattr__ вызывается не при каждом обращении к атрибуту? Сначала Python ищет атрибут обычным путем – в __dict__ инстанса, в классе, дальше по наследованию, вызывая дескрипторы если они попались. __getattr__ в этом поиске не участвует – он вызывается только тогда, когда поиск ничего не нашел и все идет к AttributeError. class User: role = "admin" def __getattr__(self, name): return f"нет такого атрибута: {name}" u = User() print(u.role) # admin – найден обычным поиском, __getattr__ молчит print(u.missing) # нет такого атрибута: missing – поиск провалился role лежит в User.__dict__, поиск заканчивается там же – __getattr__ до вызова не доходит. А вот missing не нашелся нигде, и вместо AttributeError Python вызывает __getattr__. Перехватывать вообще все обращения умеет другой метод – __getattribute__. Он вызывается первым, до всякого поиска по __dict__, и поиск делает уже он сам: class Loud: role = "admin" def __getattribute__(self, name): print(f"обращение: {name}") return super().__getattribute__(name) l = Loud() print(l.role) # обращение: role # admin super().__getattribute__(name) и есть тот самый штатный поиск по цепочке. Если его не вызвать, а вернуть что-то свое, объект перестанет отдавать даже собственные атрибуты. Отсюда и главный риск: обращение к self.anything внутри __getattribute__ снова вызовет __getattribute__, и получится бесконечная рекурсия. На __getattr__ строятся прокси-объекты – обертки, которые делают вид, что они и есть обернутый объект: class Proxy: def __init__(self, target): self._target = target def __getattr__(self, name): print(f"проксируется: {name}") return getattr(self._target, name) class Service: def ping(self): return "pong" p = Proxy(Service()) print(p.ping()) # проксируется: ping # pong print(p._target) # ping в Proxy не определен, поиск проваливается, срабатывает __getattr__ – и обращение уходит на Service. При этом _target лежит в __dict__ инстанса, ищется обычным поиском, и __getattr__ для него не будет вызван. Поэтому рекурсии нет: прокси на __getattr__ пишется без ухищрений, чего не скажешь про __getattribute__. __getattribute__ перехватывает каждое обращение, __getattr__ – только промахи. Для оберток и ленивой подгрузки почти всегда нужен второй. Код на салфетке x Кусочки кода
Código en una sirena - Codificación Python
Evolución de suscriptores
+-0.4% últimos 30 días
Actuales
2,347
Hace un mes
2,356
Crecimiento medio
+0 / día
Actualizado
hace 5 horas

Reseñas de canal Código en una sirena - Codificación Python

Inicia sesión para dejar una reseña

Solo los usuarios registrados pueden compartir su opinión.

Aún no hay reseñas

¡Sé el primero en compartir tu experiencia con este recurso!

Recursos similares

Loading
Cambiar a tema claro
Inicio Catálogo Selecciones Blog Entrar