Различия между версиями 3 и 4
Версия 3 от 2018-12-10 12:39:43
Размер: 4479
Редактор: FrBrGeorge
Комментарий:
Версия 4 от 2018-12-14 14:57:21
Размер: 4566
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 81: Строка 81:
 * '''TODO'''
'''ВНИМАНИЕ''' Д/З больше не будет, доделывайте что есть.

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

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

TODO

Дескрипторы

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

  • Если при этом определён __set__() и/или __delete__(), это называется дескриптором данных и соответствующее имя нельзя перебить в объекте.

  • Если определён только __set__(), это называется дескриптором не-данных и соответствующее имя можно перебить в объекте.

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

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 
  • map(), filter()

  • functools.reduce()

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

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

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

Д/З

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

LecturesCMC/PythonIntro2018/12_SlotsDescriptors (последним исправлял пользователь FrBrGeorge 2018-12-14 14:57:21)