| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > Как внести изменение во встроенный тип? |
| Автор: Nilm 26.10.2006, 15:30 |
| Всем привет! Помогите пожалуйста, мне необходимо подменить в Python класс string. Добавить в соответствие каждой строке переменную типа boolean и новый метод для строк. Не подскажите, где и что надо изменить? Наверное ТОЛЬКО(?) в интерпретаторе? Потому, что в модулях string.py, StringIO.py, GoldString.py строка не определяется. Я ведь прав? |
| Автор: Void 26.10.2006, 19:12 |
| Да, к сожалению, в Python нельзя добавлять методы во встроенные типы. Нельзя ли обойтись собственным классом, унаследованным от str? |
| Автор: Nilm 26.10.2006, 19:52 | ||
К несчастью нет Тем более, что мне кроме метода еще надо как-то и переменную типа bool добавить |
| Автор: FunnyFalcon 27.10.2006, 09:00 | ||
А если просто отнаследовать:
|
| Автор: Nilm 27.10.2006, 10:41 |
| Как не обидно - нет. Мне надо сделать что-то типа taint mode, как в PHP и Perl. |
| Автор: pythonwin 27.10.2006, 14:58 |
| согласно http://python.promsoft.ru/index.php?action=forum&id=3378#id_3378 я понимаю, что это курсовой на питоне? опиши пожалуста проблему подробней |
| Автор: Nilm 27.10.2006, 15:20 | ||
Дело обстоит так: Я согласен, что надо унаслеовать класс. Но еще его надо и подменить в интерпретаторе, вместо стандартного str. Чтобы пользователю не надо было в ручную что либо подключать. Что такое taint mode: Как правило, всевозможные обработчики формочек, CGI скрипты и т.п. пишут люди умные, но даже они не застрахованы от ошибки. Например рассмотрим простейший пример, где пользователь вводит в форму свое имя, и по нажатию на кнопочку Submit переходит на стр, где написано: "Привет, [имя пользователя]". Соотв всякие нехорошие редиски могут этим востользоваться и провести injection atack. Например ввести в имя пользователя Java-script, который отошлет кукисы юзера атакующему или т.п. Соотв. taint mode запрещает производить со строками, полученными от позьзователя ажные действия, например, exec. Но опасны только строки, полученные от пользователя. Мы ставим в соотв строке bool переменную, которая и обозначает, taint эта строка или нет. И ессесно есть функция, которая возвращает значение этой булевой переменной. |
| Автор: pythonwin 27.10.2006, 16:36 |
| Nilm, ты пишешь под веб? сможешь, дать постановку задачи? |
| Автор: The_Gremlin 28.10.2006, 16:11 |
| To slivlen: Ну да, придется многое переписать. To pythonwin: Что именно ты имеешь ввиду под постановкой зачачи? Курсовой или именно данный момент (подмана класса) |
| Автор: Nilm 29.10.2006, 11:03 | ||
+1 |
| Автор: pythonwin 30.10.2006, 08:57 | ||||
из http://python.promsoft.ru/index.php?action=forum&id=3378#id_3378
Nilm, ты усложняешь - можно решить проблему по другому. а нужно описание (постановка задачи) для курсового! возможно твою ппроблему можно решить по другому |
| Автор: albertn 30.10.2006, 12:20 | ||
На сколько я понял тебе нужно просто экранировать специальные html символы. Нашел по этой теме http://gazette.linux.ru.net/lg83/evans.html:
Просто во всех выводах в форму экранировать специальные символы, и никаких проблем не будет. Или я неправильно понял твою проблему? |
| Автор: pythonwin 30.10.2006, 12:22 |
| albertn, спасибо за ссылку! |
| Автор: albertn 30.10.2006, 12:24 |
| Nilm, Если нужно экранирование символов по-умолчанию, то можно воспользоваться http://www.zope.org/, или шаблонами страниц http://zpt.sourceforge.net/ (работает без Zope). |
| Автор: pythonwin 30.10.2006, 12:39 | ||
прошу прощения, у albertn, - это его ссылка и Он первым разместил эту ссылку, просто я её не заметил. +1 |
| Автор: Nilm 30.10.2006, 15:01 |
| Спасибо за идеи. Я наконец-то выловил моих любимых научников и задал им конкретный вопрос. На что и получил ответ: Смысл в том, чтобы внести изменения в языковую структуру стринг так, чтобы потом в интерпретаторе это использовать 1. добавить в этот класс своё поле. Любое. 2. добавить геттер и сеттер этого поля 3. собрать этот изменненный питон 4. в mod_python попробовать вызвать этот геттер и сеттер Теперь буду думать какой из файлов необходимо изменить. To pythonwin: постановку я тебе скинул в личку. |
| Автор: Nilm 31.10.2006, 10:21 | ||
Скорее всего это stringobject.c |
| Автор: pythonwin 31.10.2006, 11:08 |
Nilm, т.е. ты уже решил писать свой питон? |
| Автор: Nilm 31.10.2006, 11:12 | ||
Нет, за меня так решили |