Ответы пользователя по тегу Python
  • Что эффективнее для небольшого приложения: C++ или Python?

    Tark
    @Tark
    Pyramid'альный мир
    Если вы хотите использовать SQLite, то выборка данных будет занимать намного больше времени, чем отрисовка данных на экране. Питон в 35 раз медленнее С++ в синтетических тестах, но разница между программами-скриптами при использовании файловой СУБД будет сравнима с погрешностью измерений. Берите Python, не сомневайтесь!
    Ответ написан
  • Как перегрузить __getattribute__ класса через декоратор в Python?

    Tark
    @Tark
    Pyramid'альный мир
    А чего именно вы хотите достичь? Чтобы можно было... что? Вы часто и помногу переопределяете функцию __getattribute__ и вам хочется сократить код? Тогда как вариант...

    from functools import wraps
    
    
    def wrap(f):
        def tmp(self, name):
            # print name
            if name == 'test':
                return 'some test'
            elif name == 'another':
                return 'another test'
            else:
                return f.__call__(object, name)
        return tmp
    
    
    class Some(object):
        def __init__(self):
            self.some_value = 10
    
        @wrap
        def __getattribute__(self, name):
            if name == 'test1':
                return 'test string'
            return object.__getattribute__(self, name)
    
    value = Some()
    print value.test
    print value.another
    print value.test1


    ... выведет:
    some test
    another test
    test string


    ВАЖНОЕ УТОЧНЕНИЕ: я пришёл в Питон, когда уже была версия 2.7.2 и с ранними версиями не работал.
    ----------------------

    Ответили уже, как вижу. А я дописал декоратор так, чтобы оно работало, лол.

    # encoding: utf-8
    
    
    def wrap(f):
        def tmp(self, name):
            arg, lang = name.split('_')
            try:
                return object.__getattribute__(self, name)
            except AttributeError:
                return object.__getattribute__(self, arg)
        return tmp
    
    
    class Some(object):
        def __init__(self):
            self.language = 'Language'
            self.language_ru = u'Язык'
    
        @wrap
        def __getattribute__(self, name):
            return object.__getattribute__(self, name)
    
    value = Some()
    print value.language_ru
    print value.language_ch
    Ответ написан
  • Использование requests и кодировка полученной страницы - как исправить проблемы с русскими символами?

    Tark
    @Tark
    Pyramid'альный мир
    Если сделать
    r = requests.get('http://da.ru')
    print r.encoding

    то окажется, что кодировка там брутальная ISO-8859-1

    for y in parsed_body.xpath("//a"):
        url = y.get("href")
        anchor = y.text
        if anchor:
            print url, anchor.encode(r.encoding)

    Так всё нормально. Правда, у меня Python 2.7.3
    Ответ написан
    Комментировать
  • Как оптимизировать пересечение списка значений MongoDB?

    Tark
    @Tark Автор вопроса
    Pyramid'альный мир
    Мда. Использовался драйвер pymongo версии 2.5.2. Установил последний, 2.6.3, время получения данных сократилось до 3 мс, с пересечением - до 4 мс. Результат считаю удовлетворительным, а вопрос - закрытым. Эх!
    Ответ написан
    Комментировать