gentoo.ru
python
python@conference.gentoo.ru
Понедельник, 5 сентября 2011< ^ >
krigstask установил(а) тему: ЯП Python || https://gist.github.com/289467 || Логи: http://tinyurl.com/gentoo-py-logs || "Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck." || Вышел IPython 0.11!
Конфигурация комнаты
Участники комнаты

GMT+4
[09:39:24] LK4D4 вышел(а) из комнаты
[10:13:11] lk4d4 вышел(а) из комнаты
[10:13:27] lk4d4 вошёл(а) в комнату
[11:06:14] pimiento вошёл(а) в комнату
[11:06:21] <pimiento> Всем всего доброго
[11:08:32] <lk4d4> привет
[11:14:22] <pimiento> а для строк форматирования unicode как указывается? %s?
[11:15:53] <lk4d4> да вроде да
[11:16:04] <lk4d4> вообще сейчас модно юзать .format
[11:16:34] <pimiento> форматирование строк не в стиле printf - глупость
[11:17:04] <lk4d4> очень интересно с чего ты это взял
[11:17:18] <lk4d4> я тебе точно так же могу сказать, что писать не на Си - глупость
[11:17:34] <pimiento> ну потому что чем плох printf, что нужно городить велосипед без особых преимуществ?
[11:17:57] <lk4d4> динамическая типизация тоже глупость по твоей логике
[11:19:15] <pimiento> нет. у неё есть плюсы, она не заставляет тебя изучать новые правила, пригодные только для одного места
[11:20:15] <pimiento> как правильнее реализовывать __unicode__? делать self.data.decode('utf-8') или просто unicode(self.data)?
[11:20:21] <lk4d4> в общем, даже в документации написано, что рекомендуется использовать format
[11:21:20] <pimiento> кстати, %u - числовой вывод, а юникод выводится тем же %s
[11:21:54] <lk4d4> unicode()
[11:22:25] <pimiento> поди, надо ещё его завернуть в try/except?
[11:23:20] <lk4d4> возможно, если есть возможность схватить эксепшон
[11:23:46] <pimiento> а как вот узнать какие он эксепшены может выкинуть?
[11:23:54] <lk4d4> в доке почитать
[11:24:07] <pimiento> help(unicode())?
[11:24:13] <lk4d4> ага
[11:24:17] <pimiento> там нет
[11:24:52] <lk4d4> http://docs.python.org/library/functions.html#unicode
[11:24:55] <lk4d4> ну беда тогда
[11:25:12] <pimiento> точнее, там есть эрроры, но вот именно функции unicode() нет
[11:25:56] <lk4d4> ну на сайте есть
[11:26:12] <lk4d4> на сайте почему-то это функция, а в хелпе класс
[11:27:37] <pimiento> если я не передаю кодировку, то LookupError не возникнет. Остаётся ValueError, отчего оно может возникнуть? если я передам символ не существующий в unicode?
[11:28:33] <lk4d4> ну наверное всякие такие штуки
[11:28:37] <lk4d4> и несоответствие типов
[11:42:33] <pimiento> Заработался - пропустил обед
[11:43:18] <lk4d4> круто
[11:53:14] <pimiento> а что, для реализации ==, <=, >=, <, >, != достаточно реализовать __cmp__?
[11:53:55] <lk4d4> вот этого я не знаю
[11:56:10] <lk4d4> из доки не очень понятно, но вроде <= и >= не выгорает
[11:59:43] <pimiento> Ну у меня оно их обрабатывает и не ругается
[12:00:43] <lk4d4> и нормально возвращает true и false?
[12:00:53] <pimiento> Да, сейчас проверил
[12:01:32] <lk4d4> ну круто тогда
[12:02:01] <pimiento> а правильно ли что unicode от u'text' возвращает 'u'text''?
[12:02:44] <lk4d4> хехе, думаю не особо
[12:13:01] <lk4d4> у меня кстати u'text' возвращает
[12:33:51] <pimiento> ну я и имел в виду, что возвращает строку u'text'
[12:34:13] <pimiento> хм, или всё правильно
[12:34:47] <lk4d4> в общем то же самое возвращает
[12:43:54] <pimiento> что-то не пойму какие надо эксепшены ловить для __cmp__: разве что только наличие в other нужного аттрибута
[12:48:20] <pimiento> как правильнее сделать проверку принадлежности other к этому же классу?
class MyClass(object):
    def __cmp__(self, other):
        if isinstance(other, MyClass):
        return cmp(self.a, other.a)
[12:48:28] <pimiento> Пока только такое решение приходит на ум
[12:53:00] <lk4d4> ну так и надо
[12:53:18] <lk4d4> только что ты в else будешь делать?
[12:53:32] <pimiento> raise TypeError
[12:53:42] <lk4d4> а сам собой там не выскакнет?
[12:54:00] <pimiento> только если у объекта нет нужного атрибута
[12:54:46] <lk4d4> ага, ну тогда круто
[12:55:49] <lk4d4> если не возникнет потом странных желаний сравнивать с наследничками
[12:56:14] <pimiento> а как проверить, что он наследник?
[12:58:01] <lk4d4> через super() как-нибудь
[12:58:15] <lk4d4> но это уже слишком продуманная логика у тебя будет
[12:58:26] <lk4d4> может ты никогда и не будешь с ними сравнивать
[12:58:55] <lk4d4> http://kedeligdata.blogspot.com/2009/04/more-about-cmp-method-in-python.html
[12:59:10] <lk4d4> вот посмотри тут парень по хардкору кстати поясняет
[13:03:41] lk4d4 вышел(а) из комнаты
[13:03:57] lk4d4 вошёл(а) в комнату
[13:13:21] <pimiento> хм, а как лучше? выдать эксепшен, что разные типы сравнивать нельзя или выдать False, что типа они не равны? Это в случае с __eq__
[13:15:07] <lk4d4> ну насколько можно судить по остальной логике питона, то False
[15:08:30] lk4d4 вышел(а) из комнаты
[15:08:48] lk4d4 вошёл(а) в комнату
[16:31:06] <pimiento> объясните мне кто-нибудь что пытаются до меня вот здесь донести: http://fuhm.net/super-harmful/
[16:33:16] <pimiento> http://habrahabr.ru/blogs/python/62203/ - может, тут разъяснят
[17:20:35] <pimiento> C3 съел мой мозг. чего про декораторы можно путёвого читнуть, а то ничего не пойму из тех обрывков, что понаходил
[17:34:00] <lk4d4> pep какой-то про декораторы
[17:34:27] <lk4d4> ботан воообще мастер декорирования
[17:35:01] <pimiento> надо будет тогда вечером его из дома выцепить
[17:35:23] <lk4d4> у него даже есть какая-то ерунда где до черта декораторов
[17:35:29] pimiento пока вообще не поймёт что это за штуки и с чем их едят
[17:35:44] <lk4d4> http://www.python.org/dev/peps/pep-0318/
[17:35:55] <lk4d4> ну это не очень сложно
[17:36:08] <lk4d4> просто пример какой-нибудь найди
[17:36:55] <pimiento> так находил много и ничего не понял :) понял что они возвращают функции, но пока не пойму как с ними обращаться
[17:37:26] <lk4d4> вон в пепе прочитай
[17:37:35] <lk4d4> там написано чему эквивалентен декоратор
[17:44:58] <pimiento> а что делает classmethod?
[17:45:25] <lk4d4> я подозреваю, что делает функцию методом класса
[17:49:30] <pimiento> http://dpaste.com/609093/plain/ - в этом весь смысл?
[17:51:20] <lk4d4> да
[17:52:29] <lk4d4> там еще фабрики декораторов есть
[17:54:43] <pimiento> lk4d4: это как?
[17:55:49] <lk4d4> а дальше почитай - там написано
[17:57:32] <pimiento> это которые @decomake(argA, argB, ...)?
[17:59:02] <lk4d4> вроде да, можешь в гугле по-русски набрать фабрики декораторов
[17:59:10] <lk4d4> и там будет статейка про джанго с примером
[18:01:04] <pimiento> спасибо, почитаю. поеду уже домой :)
[18:01:09] <pimiento> пока
[18:01:14] pimiento вышел(а) из комнаты
[19:27:57] LK4D4 вошёл(а) в комнату
[19:49:12] pimiento вошёл(а) в комнату
[19:50:01] <pimiento> И сновам всем всего доброго
[20:15:32] <pimiento> maksbotan: разъясни непутёвому как работать с декораторами
[20:21:06] <pimiento> http://dpaste.com/609152/ - объясните мне, пожалуйста, чего тут делают :)
[20:58:23] <pimiento> ох тыжш - там ещё и дескрипторы есть
[20:58:40] <pimiento> но вроде нашёл у Лутца вменяемое объяснение всей этой котовасии
[21:23:34] <pimiento> Странно метод __getattr__ говорится, что срабатывает только для неопределённых атрибутов, а у меня и с определёнными срабатывает
[21:46:18] <pimiento> а всё - дошло как оно работает :)
[22:42:00] pimiento вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!