Контроль доступа к полям класса

Базовая документация

TODO

Дескрипторы

Дескриптор — это такой объект. В его классе должен быть метод __get__(). Если так, то когда такой объект является полем некоторого класса, доступ к этому полу становится программным.

статья на Хабре

TODO примеры

Да, @property — это такой более высокоуровневый способ организации дескрипторов.

Слоты

Если определить в классе поле __slots__, задающее список имён атрибутов класса, в объектах этого класса нельзя будет заводить полей с новыми именами. Поиск по пространству имён таких классов работает быстрее, памяти ест меньше.

TODO примеры

Лямбда-функции

Лямбда-функция — это функция-выражение. Задаётся одной строкой. Нужна для того, чтобы не плодить ненужных имён и оперативно конструировать функции

   1 >>> a = list(range(10,60,7))
   2 >>> a
   3 [10, 17, 24, 31, 38, 45, 52, 59]
   4 >>> def key(n):
   5 ...   return (n+1)%5
   6 ... 
   7 >>> key(8)
   8 4
   9 >>> sorted(a, key=key)
  10 [24, 59, 10, 45, 31, 17, 52, 38]
  11 >>> fun = lambda n: (n+1)%5
  12 >>> fun(8)
  13 4
  14 >>> sorted(a, key=fun)
  15 [24, 59, 10, 45, 31, 17, 52, 38]
  16 >>> sorted(a, key=lambda n: (n+1)%5)
  17 [24, 59, 10, 45, 31, 17, 52, 38]
  18 

TODO ещё примеры.

Конструирование классов

TODO примеры (Singleton и ещё что-нибудь)

Д/З

ВНИМАНИЕ Д/З больше не будет, доделывайте что есть.

LecturesCMC/PythonIntro2018/12_SlotsDescriptors (last edited 2018-12-14 11:57:21 by FrBrGeorge)