@python_beginnersЭта группа больше не существует

Страница 243 из 1885
Zart
06.08.2016
16:00:39
я в линуксе прожил достаточно много лет, чтобы в этот говна кусок не возвращаться

tosh
06.08.2016
16:01:26
Чо вы как эти, братушки

Zart
06.08.2016
16:01:28
расскажете когда там появится вменяемый клипбоард между иксами и консолями

tosh
06.08.2016
16:01:29
Винда, линукс

Google
tosh
06.08.2016
16:01:36
Давайте лучше унижать макоблядей!

(на самом деле нет)

Denis
06.08.2016
16:02:31
расскажете когда там появится вменяемый клипбоард между иксами и консолями
Для эмуляторов он есть (по крайней мере в кедах), для tty не представляю, зачем он нужен

Zart
06.08.2016
16:03:16
и они думают что он вменяемый...

Denis
06.08.2016
16:03:53
Есть колесико, есть ctrl+shift+c в konsole

Zart
06.08.2016
16:07:27
и есть два с половиной клипбоарда

Denis
06.08.2016
16:08:37
Никто не мешает пользоваться одним

Zart
06.08.2016
16:08:50
да ты что 8)

Viktor
06.08.2016
16:14:04
tosh
06.08.2016
16:14:58
Первый пошёл

Viktor
06.08.2016
16:15:22
:)

А вообще надо выбирать по задаче

Zart
06.08.2016
16:16:02
https://youtu.be/2F3QzB7zF8w?t=198

Google
Viktor
06.08.2016
16:16:47
Мне вот вчера надо было скинуть данные с ext4 диска Я просто перезагрузился в mint и скинул, хотя мог бы поебаться и научить macOS/Windows понимать его.

Zart
06.08.2016
16:17:43
https://www.paragon-software.com/home/extfs-windows/ если очень хочется поебаться

Viktor
06.08.2016
16:17:46
https://youtu.be/2F3QzB7zF8w?t=198
суть в "ну вас всех в пизду" ?

Viktor
06.08.2016
16:18:23
ну да
чуть съехало тогда, не?

Zart
06.08.2016
16:18:45
не, больше вокала

ролик вообще зачотен

Viktor
06.08.2016
16:19:45
ага, смотрю

Zart
06.08.2016
16:21:52
какая-то буржуйская девчонка спела пародию про проблемы с исполнением, а другая, но уже наша - перепела аналог на русском. причем народном диалекте 8)

Viktor
06.08.2016
16:24:53
UniNew

Johnnie
06.08.2016
16:34:31
а как правильно сделать декоратор как метод класса?

за класс выносить не хочу, т.к. этот декоратор использует self этого класса (для записи в лог)

tosh
06.08.2016
16:37:54
Но self - это уже объект

Johnnie
06.08.2016
16:38:35
ну поэтому и не хочу)

tosh
06.08.2016
16:38:39
Если ты декорируешь класс, то там нет никакого объекта ещё

и self тоже, соответственно

Johnnie
06.08.2016
16:39:03
не класс

декорирую методы

tosh
06.08.2016
16:39:20
а

Google
Sergey
06.08.2016
16:39:41
а как правильно сделать декоратор как метод класса?
Я сейчас не помню точно, но разве self не будет передан декоратору вместе с остальными аргументами метода?

Zart
06.08.2016
16:39:56
я нихера не понял что он хочет в итоге

tosh
06.08.2016
16:40:11
декорирую методы
а, тогда просто через вложенные ф-ции

Или через декоратор-класс

(собсна, один из самых распространенных вопросов на собеседованиях)

Zart
06.08.2016
16:40:44
class A: def decorator(...): ... @decorator def method(self, ...): так чтоль?

Johnnie
06.08.2016
16:40:47
class MyClass: def my_dec(func): def handler_wrapper(self, *args, **kwargs): print('before') func(self, *args, **kwargs) print('after') return handler_wrapper @my_dec def some_method(self): print("blah blah blah") a = MyClass a.some_method()

TypeError: handler_wrapper() missing 1 required positional argument: 'self'

Zart
06.08.2016
16:41:17
логично

tosh
06.08.2016
16:41:46
def dec (func): def _logger (*args, **kwargs): args_tail = args[1:] start_time = time.time() result = func(*args, **kwargs) return result return _logger

Не надо пихать в класс ничего

Zart
06.08.2016
16:42:07
а нафига это?

tosh
06.08.2016
16:43:06
а, только наоборот тебе надо, чтобы прокидывался self

def wrapper (obj): def decorator (func): ...

Johnnie
06.08.2016
16:43:46
есть бот для телеграма, в котором есть уровни доступа. например, можно ли писать этому боту, загружать ему файлы и тд. в sqlite лежат айдишники телеграма и прописаны эти уровни доступа. каждая команда обрабатывается своим методом класса, на который я и вешаю декораторы эти

сейчас это работает, но не понимаю как. и получается дублирование кода, хочу переделать на декоратор с аргументом, чтобы стало 3 вместо 1

Zart
06.08.2016
16:44:30
>>> class MyClass: ... def my_dec(func): ... def handler_wrapper(self, *args, **kwargs): ... print('before') ... func(self, *args, **kwargs) ... print('after') ... return handler_wrapper ... @my_dec ... def some_method(self): ... print("blah blah blah") ... >>> >>> a = MyClass() >>> a.some_method() before blah blah blah after так твой пример вполне работает

Johnnie
06.08.2016
16:44:46
бля, дичь

ща

Zart
06.08.2016
16:44:55
бгыгы

Google
tosh
06.08.2016
16:45:14
def wrapper (obj): def decorator (func): ...
Хотя что я несу, self'а же нет на том уровне

Johnnie
06.08.2016
16:45:22
https://paste.fedoraproject.org/402769/14705019/

вот это щас работает

Johnnie
06.08.2016
16:45:49
по сути меняется только self.db.is_user_authorized_to_interact(update.message.from_user.id)

Zart
06.08.2016
16:45:52
Стоп, а зачем my_dec вообще в класс пихать?
и я не знаю. он не хочет "выносить из класса"

tosh
06.08.2016
16:46:09
и я не знаю. он не хочет "выносить из класса"
У него другая проблема: он хочет инстанс использовать внутри декоратора

Johnnie
06.08.2016
16:46:14
Zart
06.08.2016
16:46:24
в итоге он создает локальный декоратор, оборачивает а потом класс делает привязку уже к обёрнутому

Admin
ERROR: S client not available

Zart
06.08.2016
16:46:36
Johnnie
06.08.2016
16:46:40
ну для лога можно отдельный декоратор сделать, суть не в этом. self.db остается один хер

ересь
почему?

Johnnie
06.08.2016
16:47:25
я походу чего-то не понимаю :)

Zart
06.08.2016
16:47:28
в декораторе пиши self.__MyClass_append_to_log

tosh
06.08.2016
16:48:05
looks like dirty hack

Johnnie
06.08.2016
16:48:14
а внутри __append_to_log лежит еще один self

как без инстанции класса это заработает-то?

Zart
06.08.2016
16:48:29
looks like dirty hack
он и есть, причем на уровне компиляции самим питоном

Google
Johnnie
06.08.2016
16:48:48
хуясе

у меня было понимание, что так можно только для static-методов :)

Zart
06.08.2016
16:49:42
я тебя не пони

Johnnie
06.08.2016
16:50:10
суть в том, что этот самый логгер определяется в конструкторе класса

Zart
06.08.2016
16:50:31
и что?

Johnnie
06.08.2016
16:50:47
а ты предлагаешь вызывать class.method без привязки к конкретному экземпляру класса

Sergey
06.08.2016
16:50:53
суть в том, что этот самый логгер определяется в конструкторе класса
In [1]: def my_dec(func): ...: def handler_wrapper(self, *args, **kwargs): ...: print('before') ...: print(self.db) ...: func(self, *args, **kwargs) ...: print('after') ...: return handler_wrapper ...: ...: class MyClass: ...: def __init__(self): ...: self.db = 'onetwo345...' ...: ...: @my_dec ...: def some_method(self): ...: print("blah blah blah") ...: In [2]: In [2]: x = MyClass() In [3]: x.some_method() before onetwo345... blah blah blah after

Johnnie
06.08.2016
16:51:01
бля да что за

почему у меня не работает

Zart
06.08.2016
16:51:11
класс метод можно вызывать без привязки к экземпляру по определению

вчем проблема?

Sergey
06.08.2016
16:51:15
минимально измененный вариант Zart-а

Johnnie
06.08.2016
16:51:30
а, ты поменял

Zart
06.08.2016
16:51:32
self.db неинтересно

переименуй в self.__db

во враппере тогда придётся вместо self.__db писать self._MyClass__db

вариант не мой - я копипастил его код как-есть

tosh
06.08.2016
16:52:49
Но ведь на этапе сборки не будет никакого экземпляра. Более того, для декоратора метод класса - никакой не метод, а просто функция

Johnnie
06.08.2016
16:53:19
Gold
06.08.2016
16:53:23
Привет , всем)

Zart
06.08.2016
16:53:29
свалю-ка я нафиг, а то тут народ сам не понимает что он хочет

Страница 243 из 1885

Эта группа больше не существует Эта группа больше не существует