@ru_python

Страница 2430 из 9768
Nikolay
06.03.2017
20:44:42
Элементарного не знают

Tony
06.03.2017
20:46:29
как у тебя так выделяеттся await?

name await is not defined

Maksym
06.03.2017
20:48:51
сорян

Google
Ramil
06.03.2017
20:52:29
Всем привет! Есть ли в Python возможность делать что-то типа cleanup-функции для метода класса? Например, есть метод класса, и в нем есть много return-ов в разных местах. Однако я хочу, чтобы перед каждым return-ом выполнилась функция, которая бы что-то делала, например, некоторым полям класса обратно присвоила бы 0 и выводила строчку вроде "Работа выполнена". Как это можно сделать по-хорошему?

Ramil
06.03.2017
21:12:55
так, как ты описываешь - никак, но ты можешь выполнить функцию ПОСЛЕ return из основной, обернув ее в декоратор
Что-то типо такого? class C: def __init__(self, number): self.count = 0 self.number = number def cleanup_foo(self): def wrapper(func): def wrapped(*args, **kwds): result = func(*args, **kwds) self.count = 0 print 'Finished:', count return result return wrapped return wrapper @cleanup_foo def foo(self): if self.number % 2 == 0: self.count += 1 return 1 else: self.count -= 1 return -1

Tony
06.03.2017
21:18:18
@asyncio.coroutine async def interval(): print('sec') await asyncio.sleep(1) if __name__ == '__main__': interval()

RuntimeWarning: coroutine 'interval' was never awaited interval()

в гугле не нашел

Nikolay
06.03.2017
21:19:57
Это в какой-то параллельной вселенной

Nikolay
06.03.2017
21:20:19
loop = asyncio.get_event_loop() loop.run_until_complete(interval())

Google
Tony
06.03.2017
21:21:13
как все просто

спасибо большое

Nikolay
06.03.2017
21:21:41
спасибо большое
заработало?

Tony
06.03.2017
21:21:46
Nikolay
06.03.2017
21:21:48
вот дальше от этого кода и пляши

Tony
06.03.2017
21:21:57
причем видел этот ответ на стаковерфлоу

сдуру пропустил

Stanislav
06.03.2017
21:22:17
заработало?
Скорее да чем нет

Nikolay
06.03.2017
21:23:10
Скорее да чем нет
пациент скорее жив, чем мертв?

Stanislav
06.03.2017
21:23:27
Nikolay
06.03.2017
21:23:36
Да нет
да нет наверное

Stanislav
06.03.2017
21:23:44
Nikolay
06.03.2017
21:24:03
Возможно
с некоторой степенью вероятности

Stanislav
06.03.2017
21:24:27
Ramil
06.03.2017
21:28:49
а класс должен наследоваться от object
Унаследовался от object, но не очень пойму, что делать с декоратором? Он ведь должен быть внутри класса, чтобы иметь доступ к его полям?

Nikolay
06.03.2017
21:29:15
декоратор не должен иметь ни к чему доступа

декоратор - это просто функция, которая принимает функцию и возвращает функцию

Stanislav
06.03.2017
21:29:33
Унаследовался от object, но не очень пойму, что делать с декоратором? Он ведь должен быть внутри класса, чтобы иметь доступ к его полям?
1. Что-то можно сделать я думаю. 2. Возможно не должен а возможно и должен. Надеюсь раскидал по циферкам

Google
Max
06.03.2017
21:32:54
Кто-то маялся шифровкой данных на Python и последующей загрузкой в БД? Просто не совсем ясна процедура поиска по ним и оптимальный алгоритм (а может и готовый метод).

Max
06.03.2017
21:34:26
Ну шифрование данных, по типу DES, только из нашего столетия.

Max
06.03.2017
21:36:19
Это наводящий вопрос, понятно что я не ради галочки сюда написал.

Ramil
06.03.2017
21:36:47
декоратор не должен иметь ни к чему доступа
Ага, понял. А с точки зрения code style и дизайна в целом это нормально, что декоратор, написанный для какого-то метода класса пишется вне класса? Нельзя ли его как-то в класс запихнуть, все-таки?

Stanislav
06.03.2017
21:37:32
Nikolay
06.03.2017
21:37:36
и писать @ClassName.decorator_name

Ramil
06.03.2017
21:39:46
можно сделать его staticmethod’ом, если очень хочется
А какой способ считается более хорошей практикой? Писать вне или внутри класса?

Nikolay
06.03.2017
21:40:23
А какой способ считается более хорошей практикой? Писать вне или внутри класса?
если ты точно не уверен, понадобится ли он тебе где-то еще, то лучше пиши вне

Stanislav
06.03.2017
21:40:29
А какой способ считается более хорошей практикой? Писать вне или внутри класса?
1. Более лучшей является хорошая практика 2. Писать можно и так и так, но энтропия на самом деле решающий фактор

Nikolay
06.03.2017
21:40:49
либо, есть вариант, написать родительский класс и описать его в нем, а остальные от него наследовать

Stanislav
06.03.2017
21:41:48
ты практикуешься вести беседу ни о чем?)
Возможно практика лучший учитель, лучше теории

Nikolay
06.03.2017
21:42:00
Stanislav
06.03.2017
21:42:38
Задавайте свои вопросы! Всегда готов помочь

I
06.03.2017
21:43:03
сколько будет 2+2?

Stanislav
06.03.2017
21:43:25
сколько будет 2+2?
Вот знаешь, математики ведь великие люди. Бывает умирают

Ramil
06.03.2017
21:49:22
если ты точно не уверен, понадобится ли он тебе где-то еще, то лучше пиши вне
Уверен, что больше нигде не понадобиться больше. Но вот со staticmethod пока не получается. Пишу class C(object): def __init__(self, number): self.count = 45 self.number = number @staticmethod def cleanup(func): def wrapped(self): result = func(self) self.count = 0 print 'Finished:', self.count return result return wrapped @C.cleanup def foo(self): if self.number % 2 == 0: self.count += 1 return 1 else: self.count -= 1 return -1 Но в данном случае выдается ошибка AttributeError: type object 'C' has no attribute 'cleanup'. Что я делаю не так?

Google
b0g3r
06.03.2017
21:52:35
Есть подозрение что не хватает скобок после cleanup

Stanislav
06.03.2017
21:52:57
Есть подозрение

Admin
ERROR: S client not available

Nikolay
06.03.2017
21:53:31
оно сработает, если вместо @C.cleanup написать @cleanup.__func__

но это как-то уж больно грязно

в общем, вынеси лучше его из класса и дело с концом

b0g3r
06.03.2017
21:54:39
Он хочет счетчик экземпляра класса обнулять в нем

Stanislav
06.03.2017
21:55:02
Да

Nikolay
06.03.2017
21:56:59
ну вообще тогда лучше так не делать

Ramil
06.03.2017
21:59:17
ну вообще тогда лучше так не делать
А как лучше делать? Выносить за класс? Это как-то странно, по-моему. И чем @cleanup.__func__ грязен, кстати?:)

Stanislav
06.03.2017
22:03:13
Да

Nikolay
06.03.2017
22:03:20
ты либо делаешь общий декоратор, который не имеет отношения к конкретному классу, либо пишешь код в таком виде, что всегда дергается коллбэк

Да
ты запарил немного :) заканчивай

Stanislav
06.03.2017
22:03:45
ты запарил немного :) заканчивай
Не мешай софистику качать

Google
Stanislav
06.03.2017
22:04:03
Надо же начинать?

Вдруг президентом стану

Nikolay
06.03.2017
22:04:21
Не мешай софистику качать
давай во флуд-чате качай тогда :) @pyflood

Stanislav
06.03.2017
22:08:33
Ок, понял. Спасибо!
Всегда обращайся, я готов помочь простым людям! Голосуйте за меня

А я спать

53r63rn4r
06.03.2017
22:08:53
@ Завтра в школу

Stanislav
06.03.2017
22:09:17
53r63rn4r
06.03.2017
22:09:27
В бурсу чтоли поступил уже?

Поздравляю

Stanislav
06.03.2017
22:11:56
В бурсу чтоли поступил уже?
Ты все ещё жалок, не выходит Иди тренируйся)

Ramil
07.03.2017
00:35:14
ты либо делаешь общий декоратор, который не имеет отношения к конкретному классу, либо пишешь код в таком виде, что всегда дергается коллбэк
Кажется, нашел неплохой способ: class C(object): def __init__(self, number): self.count = 45 self.number = number def cleanup(func): def wrapped(self): result = func(self) self.count = 0 print 'Finished:', self.count return result return wrapped def foo(self): if self.number % 2 == 0: self.count += 1 return 1 else: self.count -= 1 return -1 foo = cleanup(foo)

Artem
07.03.2017
00:56:15
многопоточный софт, соцсети и биткоины - пахнет чем-то не до конца легальным
чем биткоины не угодили? часто это самый простой способ перевести деньги

узнал, что fabric (точнее paramiko) не поддерживает ключи ed25519. issue висит почти три года, лол

Pavel
07.03.2017
03:39:47
А есть ли провайдер карт (гугл, яндекс, осм, кто там ещё бывает), у которого есть внятный АПИ для серверсайда? (Yandex|Google) Static Maps - почти идеал, но из-за пары ньюансов не очень подходит.

мне надо в телеграм боте поверх карты рисовать какие-то маркеры. яндекс-гугл карты предлагают динамический див, с которым сами работают через жс. достаточно геморойной для серверсайда. А если статические яндекс\гугл карты (я им координаты нужного мне квадрата, они мне картинку), то там тоже беда. Они присылают карту чуть больше, чем мне надо. То есть, нужный мне квадрат влезает, но из-за дискретного масштаба поплучается чуть больше. И нужно как-то угадывать, координаты какого куска они мне прислали. А маркеры, которые они умеют ставить, не совсем подходят по возможностям, нужно самому рисовать.

Pavel
07.03.2017
03:55:51
нет, а как? там PNG на выходе, в заголовках тоже ничего нет.

Страница 2430 из 9768