А какой смысл ограничивать в доступе задачи курса? У вас в CS всё равно набор ограничен и есть конкурс на места, в оффлайн на всех не хватит при любом раскладе.
Не понял про MemorizingDict. Почему history будет статическая, т.е. общая для всех классов? Обращение к этой переменной через self, не через имя класса ruclips.net/video/SJ8z-TF07s4/видео.html
+Oleg Khalidov атрибут history будет общим для всех экземпляров потому что он инициализируется один раз при объявлении класса. При обращении к self.history интерпретатор сначала посмотрит в `__dict__` экземпляра, поймёт, что history там нет, затем продолжит поиск в `__dict__` класса, где и найдёт тот самый разделяемый deque.
+Sergei Lebedev Нашел! Я когда проверял в python shell, полю history присваивал значение а не вызывал у него append(), чем и создавал локальный аттрибут history. Спасибо! И за то что выложили лекции тоже)
Почему то : >>> import collections >>> class MemorizingDict(dict): . history = deque(maxlen=10) . . def set(self, key, value): . self.history.append(key) . self[key] = value . . def get_history(self): . return self.history . Traceback (most recent call last): File "", line 1, in class MemorizingDict(dict): File "", line 2, in MemorizingDict history = deque(maxlen=10) NameError: name 'deque' is not defined >>> что нетак Python 3.4.3???
Bunch - это стандартный types.SimpleNamespace
А где можно посмотреть задачи?
Задачи доступны только студентам CS центра (набор раз в год в Питере и Новосибе).
А какой смысл ограничивать в доступе задачи курса? У вас в CS всё равно набор ограничен и есть конкурс на места, в оффлайн на всех не хватит при любом раскладе.
Где можно почитать про это более подробно?
Уточните, пожалуйста, про что именно.
Не понял про MemorizingDict. Почему history будет статическая, т.е. общая для всех классов? Обращение к этой переменной через self, не через имя класса
ruclips.net/video/SJ8z-TF07s4/видео.html
+Oleg Khalidov атрибут history будет общим для всех экземпляров потому что он инициализируется один раз при объявлении класса. При обращении к self.history интерпретатор сначала посмотрит в `__dict__` экземпляра, поймёт, что history там нет, затем продолжит поиск в `__dict__` класса, где и найдёт тот самый разделяемый deque.
+Sergei Lebedev Нашел! Я когда проверял в python shell, полю history присваивал значение а не вызывал у него append(), чем и создавал локальный аттрибут history.
Спасибо! И за то что выложили лекции тоже)
Про super вообще не понял, 3 раз пересматриваю фрагмент с 50 минуты
лучше самому выполнить в питоне, станет понятнее
забаненныыыыый в гуглеееееее добрался до ютубааааааа
Почему то :
>>> import collections
>>> class MemorizingDict(dict):
. history = deque(maxlen=10)
.
. def set(self, key, value):
. self.history.append(key)
. self[key] = value
.
. def get_history(self):
. return self.history
.
Traceback (most recent call last):
File "", line 1, in
class MemorizingDict(dict):
File "", line 2, in MemorizingDict
history = deque(maxlen=10)
NameError: name 'deque' is not defined
>>>
что нетак Python 3.4.3???
сработало так:
>>> import collections
>>> class MemorizingDict(dict):
. history = collections.deque(maxlen=10)
.
. def set(self, key, value):
. self.history.append(key)
. self[key] = value
.
. def get_history(self):
. return self.history
.
>>> d = MemorizingDict({'foo':42})
>>> d.set('baz', 100500)
>>> print(d.get_history())
deque(['baz'], maxlen=10)
>>> d = MemorizingDict()
>>> d.set('boo', 500100)
>>> print(d.get_history())
deque(['boo'], maxlen=10)
но по моему что-то тут не так?!
Taxom, тут все так. Либо в первом варианте импорт поменять на from collections import deque, либо использовать второй вариант
Это НЕ атрибут класса, а свойство!
а вот тут вы попались, тк свойства и переменные ( fields/attributes) класса -- разные вещи!
Треш, в уроках про классы применяют обертки
на какой минуте?
чем это плохо?