Делимся детальными руководствами и разборами по теме винила, обсуждаем необычные находки и исторические примеры, показываем наши видеооброзы и тематические подборки.
Пользователь
Атрибуты и протокол дескриптора в Python
6 мин
16KТуториал
Перевод
Рассмотрим такой код:
class Foo:
def __init__(self):
self.bar = 'hello!'
foo = Foo()
print(foo.bar)
Сегодня мы разберём ответ на вопрос: «Что именно происходит, когда мы пишем foo.bar?»
Вы, возможно, уже знаете, что у большинства объектов есть внутренний словарь __dict__, содержащий все их аттрибуты. И что особенно радует, как легко можно изучать такие низкоуровневые детали в Питоне:
>>> foo = Foo()
>>> foo.__dict__
{'bar': 'hello!'}
Давайте начнём с попытки сформулировать такую (неполную) гипотезу:
foo.bar эквивалентно foo.__dict__['bar'] .
Пока звучит похоже на правду:
>>> foo = Foo()
>>> foo.__dict__['bar']
'hello!'
+11
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность