
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

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

Zart
06.08.2016
16:18:07

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

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

Johnnie
06.08.2016
16:45:22
https://paste.fedoraproject.org/402769/14705019/
вот это щас работает

Sergey
06.08.2016
16:45:34

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

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 остается один хер

Sergey
06.08.2016
16:47:21

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

Google

Zart
06.08.2016
16:48:43

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
свалю-ка я нафиг, а то тут народ сам не понимает что он хочет
Эта группа больше не существует