Всё-таки Python красивый язык. Свойство объекта может быть определено как специальный метод экземпляра объекта. Практически это позволяет обращаться к свойству как по имени, так и с помощью метода (getter или setter, или и то и другое в зависимости от операции). Кроме того, такие обращения к методу позволяют при получении и установке свойств выполнять дополнительные операции, например изменять счётчик обращений к свойству объекта.
-
class MyClass(object):
-
def get_a(self):
-
return self._a + 1
-
def set_a(self, value):
-
self._a = value - 1
-
a = property(get_a, set_a, doc="Off by one a")
-
-
# Python 2.6 style
-
class MyClass(object):
-
@property
-
def a(self):
-
return self._a + 1
-
@a.setter #makes the property writeable
-
def a(self, value):
-
self._a = value - 1
python, программирование
Сначала вКонтакте открывает XMPP, теперь вот Яндекс запустил бету API к Я.ру. Гораздо интереснее не сама новость, а рассказ Ивана Сагалаева о том, как всё это делалось и устроено внутри. API сделано в соответствии с идеологией REST. Помимо собственно API сделан также сервис OAuth-авторизации для этого и других API Яндекса. В блоге яндекса есть даже пример кода на Python, реализующий смену настроения пользователя.
Возникает такое ощущение, что рунет начинает потихонечку обрастать такими сервисами, позволяющими интегрироваться друг-в-друга с применением общедоступных API, и это есть хорошо.
python, рунет, стандарты, яндекс
При разработке приложения GAE (Google Application Engine) на Python часто возникает потребность в выводе отладочной информации. Вдумчивое изучение документации показало, что надо использовать стандартный модуль logging, как описано в документации GAE. Вывод отладочных сообщений осуществляется с помощью функций info(), debug() и т.д. Отладочные сообщения выводятся в консоль запущенного dev_appserver. Отладка в опубликованном приложении может быть просмотрена в консоли администрирования.
google, python, программирование
Понадобилось по работе забивать данные из нескольких разноформатных файлов Excel в одну единообразную базу MySQL. Данных было много, вручную вбивать,- долго, да и ошибок можно наделать (ага, тот самый человеческий фактор). Естественным образом появилось желание автоматизировать этот ужос. Встроенный в MS Office VisualBasic показался некошерным по нескольким причинам: во-первых,- я его не очень хорошо знаю, а во-вторых,- не кроссплатформенно. Из других доступных языков под руками только Java и Python. Полез искать, что у нас есть в питоне для чтения Excel и нашёл чудесную совершенно библиотеку XLRD. Работает на любой платформе, где есть Python, легко читает всё что нужно. Небольшая проблема,- не читает формат xlsx (MS Office 2007), особо не вникал в чём проблема.
За запись Excel в Python отвечает парный пакет XLWT
microsoft, python, программирование
Чтобы использовать юникод в исходных кодах python, например в комментариях или значениях констант, нужно уведомить интерпретатор Python о том, что в коде присутствуют символы не из набора ASCII. Для этого нужно вставить в первой или второй строке комментарий специального вида:
# -*- coding: utf-8 -*-
Синтаксис комментария впервые введён в редакторе Emacs для установки локальных для файла переменных. Emacs поддерживает множество различных переменных, но в python поддерживается только 'coding'. Обрамляющие символы -*- показывают, что комментарий является специальной настройкой. Внутри комментария устанавливается имя переменной coding и значение, разделённое двоеточием
python, программирование
Чтобы увидеть пасхальные яйца,- стихи, зашитые в интерпретатор Питона, достаточно набрать команду
$ python -m this
python
Не в первый раз уже напарываюсь,- Python не находит пакет при импорте:
приложение (скрипт), использует собственные пакеты. Модули лежат в папке classes рядом со скриптом. Один из модулей называется, к примеру, examplemodul.py и содержит exampleclass.py. В скрипте:
from classes.examplemodul import *
.... и получаем ошибку при запуске
Читать далее...
python, программирование, Штоп Не Потер Ять
Несколько дней не мог найти блуждающую багу в программе на python: файл базы pdb (Pilot Database) при определённых условиях сохранялся неправильно. Везде, где только можно, вставил отладочные сообщений и assert'ы,- вроде всё правильно,- но не работает. Пришлось вооружаться HEX-редактором: в поле ID записывается номер текущей записи открытым текстом,- 1 байт на разряд. До 999 записи всё хорошо, в 1000-й записи последний ноль залезает в следующую запись и все последующие становятся нечитабельны. Естественно, в описании формата написано, что ID длиной всего 3 байта:
struct pdb_rec_header { /* 8 bytes total */
....
char uniqueID[3];
....
}
.
Так что переполнения бывают даже у питонов
В программе использовал готовую библиотеку peepdb.py, ошибка была как раз в ней. Моя исправленная версия peepdb
hex, python, будни сисадмина, программирование
Понадобился качественный редактор для питона,- с подсветкой кода, автоматическим дополнением и прочими удобствами. Вообщем, не редактор, а полноценная IDE. Причём, для изначально враждебного окружения, т.е. под винду. Гугл выдал несколько ссылок на полезные форумы, где и нашлась ссылка на PyScripter. Программа не "без чудес",- сразу натолкнулся на проблему с поиском python25.dll,- но после прописания всех необходимых путей программа запустилась (надо признать, что версия Python 2.6 пока не поддерживается). На вид,- нормальная среда разработки, с окнами Output, CallStack, Watches, Breackpoints и т.д. Подсветка кода настраивается, настройки переносятся в ini-файле вместе с программой, например, на USB-флешке. Посмотрим, каково оно будет в работе.
IDE, python, windows, будни сисадмина
В который раз уже забываю и снова приходится искать, как в python создать словарь(dict) из двух массивов, значения из первого массива будут ключами (keys), значения второго,- значениями хеша (values):
hash = dict(zip(keys, values))
Как сделать тоже самое на многих других языках, включая Ada, Prolog,Scala и TCL, можно посмотреть на rosettacode.org
ЗЫ: ключевые слова: знерщт вшсе
python, Штоп Не Потер Ять