Aleksandr🇷🇺
я даже в золотой век ирц не видел в чате почти 9к человек, а сейчас это норма.
Ну если зайти на фринод, то там много чатов с таким количеством
iddqmeоw
Нужно преписать метод pop() класса deque так, чтобы он делал тоже самое, но перед этим выполнял мой код... На скрине моя неудачная попытка и дефолтный метод pop(). Никак не врублюсь как это сделать(
Andrey
топовые каналы на фриноде
Aleksandr🇷🇺
топовые каналы на фриноде
блин и здесь упал онлайн
Andrey
блин и здесь упал онлайн
да я не помню, чтобы он был больше 2-3 тысяч.
Andrey
блин и здесь упал онлайн
а в телеге в канале про заббикс русскоязычном 3 тыщи
Aleksandr🇷🇺
ну как же, еще зимой на линуксе около 5к было
Aleksandr🇷🇺
ну лан, все рвно не перейдет нитко с телеги в ирк
Artêmio
Пока что я только так выкрутился, вроде всё работает, но вопрос всё равно актуален)
посмотри как выглядит класс UserDict - это имплиментация словаря на питоне, которая позволяет перегружать методы. Внутри есть переменная Data, хранящая Си-dict
Artêmio
он реализован на Си
Artêmio
мне ведь не перегрузить надо... надо понять логику дефолтного pop(), а там просто pass и я хз чё делать(
в UserList поп сделан как я выше написал про словарь - pop(self, i=-1): return self.data.pop(i)
Vladislav
Доброе утро. А кто-нибудь знает, как в pdb понаставлять новых линий ? (просто сейчас когда я жму enter - оно вместо того чтобы поставить новую линию, повторяет вывод предыдущей команды. А мне просто для наглядности нужно оступы ставить)
Dmytro
Language: py3 Source: ip = '127.0.0.1' lit = [ip] def is_list_valid(func): def check_valid(): if len(lit)<50: print('no valid') func() return check_valid @is_list_valid def my_func(): print('my func') my_func() Result: no valid my func
Dmytro
@pipinstallbrain вы это имели ввиду?
Vitalii
А чем обусловлен выбор Монго вообще?
Я пришёл на проект, не выбирал технологии.
Aragaer
только **kwargs
iddqmeоw
Tigran
да(
И какие проблемы?
iddqmeоw
И какие проблемы?
пичарм вообще не даёт переменную i поставить в popleft
Tigran
С каких пор пичарм здесь власть?
Tigran
хотя в popleft и правда нет смысла в i
iddqmeоw
хотя в popleft и правда нет смысла в i
вот такой вариант нормальный? или стоит с наследованием повозиться?
Tigran
Ну сойдёт
Tigran
Даже лучше наследования)
iddqmeоw
Даже лучше наследования)
просто очень хочется разобраться в том, что я не так сделал...
Tigran
Так ты даже не запустил код с super, как я понимаю
Tigran
Не похоже, чтобы ты очень хотел разобраться
iddqmeоw
ой, не тот скрин сорри
iddqmeоw
iddqmeоw
если так: def pop(self, i: int = -1): self._is_list_valid() print('my code') return super().pop() IndexError: pop from an empty deque
SetazeR
а ты данные в свой прокси лист пихать для начала не пробовал?
SetazeR
а потом пытаться что-то извлекать
iddqmeоw
вмысле? я запихиваю... он не пустой, даже принт сделал(
SetazeR
где запихивание?
iddqmeоw
SetazeR
ну-ка скинь код, у себя запущу
SetazeR
что-то тут не чисто
iddqmeоw
from collections import deque class Proxy(deque): def __init__(self): super().__init__() self.proxy_list = deque() def _get_fresh_proxies(self): # download fresh proxies for x in range(10): self.proxy_list.append('proxy' + str(x)) print(self.proxy_list) def _is_list_valid(self): if len(self.proxy_list) < 3: self._get_fresh_proxies() def pop(self, i: int = -1): self._is_list_valid() print('my code') return super().pop() if __name__ == '__main__': proxy = Proxy() print(proxy.pop()) print(proxy.proxy_list)
SetazeR
меня здесь дико смущает super().pop()
Andrey
простите, что влезаю, а зачем переопределять pop? почему бы не сделать свой класс poop и не наследовать pop, добавив новый функционал?
iddqmeоw
рекурсия будет
SetazeR
почему не self.proxy_list.pop()
SetazeR
вот
iddqmeоw
простите, что влезаю, а зачем переопределять pop? почему бы не сделать свой класс poop и не наследовать pop, добавив новый функционал?
я так и сделал) просто интересно понять как можно переопределить pop оставив его фонкционал и дописать свой
SetazeR
просто непонятно в данном случае к чему применяется этот самый pop()
iddqmeоw
почему не self.proxy_list.pop()
в таком случае можно и без наследования deque обойтись, не юзать супер в ините) это мой первый вариант
iddqmeоw
вот такой вариант нормальный? или стоит с наследованием повозиться?
SetazeR
ты как бэ не знаешь что делает калсс deque в своём ините, где он хранит собстно данные, а пытаешься вызывать метод pop класса deque
SetazeR
что это должно вернуть?
SetazeR
если твои данные в proxy_list, откуда deque должна знать что надо pop'ать именно оттуда?
iddqmeоw
если твои данные в proxy_list, откуда deque должна знать что надо pop'ать именно оттуда?
да ты прав, но в данном решении я не перегружаю метод pop у класса deque или всё таки делаю это? потому что если убрать наследование - всё выполняется так же
SetazeR
выдаётся ровно такая же ошибка как у тебя
SetazeR
кстати да
SetazeR
везде я так полагаю можно убрать проксилист
SetazeR
from collections import deque class Proxy(deque): def _get_fresh_proxies(self): # download fresh proxies for x in range(10): self.append('proxy' + str(x)) print(self) def _is_list_valid(self): if len(self) < 3: self._get_fresh_proxies() def pop(self): self._is_list_valid() print('my code') return super().pop() if __name__ == '__main__': proxy = Proxy() print(proxy.pop()) print(proxy)
iddqmeоw
Зачем там еще один дек (proxy_list), если класс уже наследуется от дек?
ничего не понял... мне нужен переписанный pop(), который будет делать проверку
Alex
Унаследуйся од дек и переопредели метод.
SetazeR
о как, у deque нету аргументов у pop'а вообще
SetazeR
как и у popleft
SetazeR
собстно в этом суть deque
iddqmeоw
Зачем там еще один дек (proxy_list), если класс уже наследуется от дек?
разобрался, спасибо) ещё у меня в init была переменная self.config - это импортированный класс с конфигом.. я так полагаю его тоже в таком случае наследовать и обойтись без init вообще? спасибо @SetazeR
SetazeR
ну как видишь ты давал мне код без конфига, поэтому от инита я избавился ибо он не требует переопределения
SetazeR
я тебя просто ситуация получалась
SetazeR
ты делаешь экземпляр прокси, который по сути deque
SetazeR
и потом в него ещё пихаешь deque атрибутом
SetazeR
сам работаешь с этим атрибутным deque, а pop'ать пытаешься из проксяшного