Расширяющийся модуль - PullRequest
2 голосов
/ 06 января 2011

Мне очень надоело add_type кучу «пропущенных» миметипов при использовании модуля mimetypes. Могу ли я как-нибудь сделать следующее?

# This file is named mimetypes.py
from mimetypes import *
add_type('application/x-rar-compressed', 'rar', False)
add_type('video/mp4', 'mp4', False)
add_type('video/x-ms-wmv', 'wmv', False)
add_type('video/x-flv', 'flv', False)

Проблемаэто означает, что он пытается импортировать себя, а не «настоящий» mimetypes модуль.

Я знаю, что это нелепая и плохая практика, но я не думаю, что это действительно что-то сломает.

1 Ответ

6 голосов
/ 06 января 2011

Не называйте свой модуль mimetypes.

Вот и все. Назовите это как-нибудь еще, и это работает. Может быть extra_mimetypes или что-то в этом роде. Тогда просто import extra_mimetypes из вашего программного обеспечения, и у вашего отца появился брат по имени Боб.

Единственная непифоническая вещь с ним - from mimetypes import *. Измените это на from mimetypes import add_type. Это потому, что вам вообще не нужно расширять mimetypes. Вызов add_type() добавляет ваши новые типы в реестр mimetypes, расширение не требуется.

И вообще, вам не нужно расширять какой-либо модуль. Если вы хотите добавить дополнительные функции, которых нет в модуле, вы можете использовать эти дополнительные функции во втором модуле. Расширение модулей, как вы и хотели, практически никогда не требуется.

...