2010-11-07 4 views
3

Я сейчас читаю эту удивительную книгу под названием «Погружение в Python». До сих пор все имело смысл для меня, но следующий метод оставил меня с некоторыми вопросами. Его в главе об инициализации классов:Confused by self ["name"] = filename

class FileInfo(UserDict): 
    "store file metadata" 
    def __init__(self, filename=None): 
     UserDict.__init__(self) 
     self["name"] = filename 

Это только последняя строка, которую я не получаю. То, как я это вижу в данный момент, вызывающий объект имеет список, чей элемент «имя» присваивается значение переданного аргумента. Но для меня это не имеет смысла, поскольку я думал, что вы можете получить доступ только к индексам списка целыми числами. В этой книге говорится следующее: «Вы назначаете имя файла аргумента как значение ключа имени этого объекта». Является ли ключ ключа другой переменной, которую определяет каждый объект (например, doc)? И если да, то почему к нему можно обращаться так?

+2

Погружение в Python - отличная бесплатная книга! – soulseekah

+0

Wow - 5 ответов менее чем за 5 минут .. –

+0

@Tim McNamara Мой первый ответ о Python, между прочим. –

ответ

6

[...] не только для списков. Любой тип может поддерживать его, и индекс не обязательно должен быть целым числом. self - текущий объект, который в соответствии с вашим кодом происходит от UserDict, который поддерживает item manipulation methods.

2

Вы расширение словаря, делая class FileInfo(UserDict), поэтому вы можете ссылаться на ключ делает self['name'] = filename

2

класс наследует от UserDict, который я предполагаю это ДИКТ подобного класса. Для всех подклассов dicts (который держит интерфейс Dict нетронутый), вы можете обращаться self как Dict, поэтому вы можете сделать self[key] = value

2

Поскольку ваш класс является производным от UserDict, он наследует __getitem__() метод, который принимает произвольный ключ , а не только целое число:

self["name"] = filename # Associate the filename with the "name" key. 
2

Нет, объект self является подклассом UserDict, который является формой хеш-таблицы (известной как словарь или dict в Python). Последняя строка - это просто создание ключа для имени файла .

 Смежные вопросы

  • Нет связанных вопросов^_^