Контейнеры: генераторы, итераторы, протоколы доступа к элементам
План рассказа
- вручить сертификаты
маленькая тема: with > 2.5
- протокол обёрток: enter, exit
- пример: BTree
- генераторы
- специальные методы *item, *slice, nonzero
abc > 2.6
- дают: isinstance, issubtype
- иногда требуют реализации некоторых методов
- иногда дают кучу готовых обёрток вокруг N базовых методов
пример: BTree(MutableSequence)
- пример: Field
- генератор Field.neighbours()
- пример про is: neighbour_rows
Контрольная работа
Заполните пропуски в следующих диалогах с питоном:
1 x = 1
2 class A(object):
3 x = 2
4 def print_x(self, x):
5 print "a) x =", x
6 vars().update(vars(self))
7 print "b) x =", x
8 x = 3
9 return x
10
11 def double(f, arg):
12 print f(f(arg))
13
14 >>> a = A()
15 >>> double(a.print_x, 4)
16
17
18
19
20
21
22 >>> print a.x
23
24
25 >>> a.x = 5
26 >>> a.print_x(6)
27
28
29
30
31 >>>