• Как передать собственный класс на метод в качестве параметра по умолчании?

    febday
    @febday
    Если только так:
    class Test(object):
    	def __init__(self, x: 'Test' = None):
    		if x is None:
    			x = self
    		print(x)


    Ну я думаю вы понимаете, что x будет присвоен абсолютно тоже класс, а не создаться новый
    Не очень пойму вообще где такое можно использовать
    Ответ написан
    5 комментариев
  • Как передать собственный класс на метод в качестве параметра по умолчании?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Как передать собственный класс на метод в качестве параметра по умолчании?

    Можно ли такое осуществлять? Или такое не стоит сделать даже если возможно?

    Можно. Не стоит.

    Значение аргументов по умолчанию в функции вычисляется в момент объявления функции, а не в момент обращения к ней.

    Например, экземпляр класса Test, который Вы пытаетесь использовать в качестве значения по умолчанию, будет создан в момент определения метода test, что может быть не тем, что Вы ожидаете и может привести к сложно отлаживаемым ошибкам из за неочевидного разделения состояния между экземплярами.

    Также, Ваш код приведет к ошибке, так как в момент определения метода test класс Test еще не полностью определен, и Вы не можете создать его экземпляр.

    Вместо этого, можно использовать None для аргумента по умолчанию, а внутри метода проверять, был ли передан аргумент, и если нет, то создавать новый экземпляр класса:
    class Test:
        def test(self, x=None):
            if x is None:
                x = Test()
            print(type(x))
    
    x = Test()
    x.test()

    Поделитесь целью использования такой схемы?
    Ответ написан
    4 комментария
  • Как декодировать странный текст со страницы?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Это не "странный текст", а unicode escape sequence, в которые, в соответствии со стандартом JSON, должны преобразовываться символы не входящие в диапазон ASCII. Просто преобразуйте строку, содержащую JSON, в данные Python с помощью json.loads().
    Ответ написан
    1 комментарий
  • Направление шагового двигателя Arduino?

    Daemon23RUS
    @Daemon23RUS
    Если закрыть глаза на странную конструкцию if .. else if .. то этот кусочек кода инициирует движение, и там внутри должно бы приниматься решение вниз или вверх.
    stepper.moveTo(targetPosition1);   
    stepper.runToPosition()

    Но что там внутри, нам не ведомо, Вы не показали.
    Ответ написан
    9 комментариев
  • Как сбросить пароль на Ubuntu, если у меня только один пользователь и открываю терминал я без ввода пароля?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    При sudo запрашивается пароль текущего пользователя.
    Если вы его не знаете, откройте терминал, наберите команду passwd и смените
    Ответ написан
    Комментировать
  • Как выполнять команды в cmd из Python?

    @R0Zi
    import subprocess
    
    result = b''
    process = subprocess.Popen(['cmd', '/C', command], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = process.communicate()
    if out:
        result += out.decode('cp866').encode('utf-8')
    if err:
        result += err.decode('cp866').encode('utf-8')
    print(result)
    Ответ написан
    4 комментария
  • Может ли работать IP камеры в кольцевой оптоволоконной сети?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    А почему они не будут работать с кольцом?
    Топология сети - уровень L2
    RTSP - уровень гораздо выше L4 - ему пофиг что там на нижестоящих уровнях
    Видеонаблюдение же работает через интернет - а там с топологиями вообще все что хочешь.
    3 камеры на 10 цехов - по трафику вообще ни что
    Нужны не медиаконверторы, а L2 коммутаторы с минимум двумя SFP или SFP+ разъемами и трансиверы под соответствуюшее волокно. И все в кольцо прекрастно собирается.
    Или скажите своим айтишникам, чтобы сами собрали вам L2 кольцо.
    PS: Для целей видеонаблюдения, звезда будет просто надежней, т.к. имеем только 2 точки отказа - узел цеха и центральный узел, и производительней в том плате что от каждого узла, до центрального будет гарантирована максимальная полоса пропускания канала. С другой стороны, кольцо более защищено от экскаватора и требует меньше затрат на кабель, тем более если уже проложено.
    PPS: никто не мешает использовать кольцо как шину незакрывая последний сегмент или как куст используя WDM/PON
    Ответ написан
    2 комментария
  • В чем причина такого результата проверки сетевого кабеля?

    hint000
    @hint000
    у админа три руки
    Физического доступа к кабелям уже, естественно нет, все в бетоне.
    Основное назначение гофры как раз в том, чтобы кабель можно было вытащить из гофры и протянуть новый. Поэтому стараются вести гофру без крутых перегибов, иначе трудно кабель менять.

    Ну а на концах кабеля что? Розетки? Коннекторы?

    физические повреждения кабелей исключаются полностью.
    Значит повреждения математические. :) Ну ещё полтергейст, вуду, диверсия тёмных эльфов и т.п.
    А если серьёзно, вы предусмотрели в нижней стороне гофры маленькие отверстия (типа проколы тонким шилом или иглой)? Нет? А представьте, что по какой-то причине в гофре собралась влага, она там останется на долгие годы, и по сути кабель будет лежать в вечной луже. Даже малюсеньких проколов хватило бы, чтобы вода постепенно уходила из гофры в бетон, распределялась по толще бетона и испарялась. Внимание, следующий вопрос: насколько герметична ПВХ-оболочка кабеля типа UTP? Кто-то даст гарантию, что по всей длине не образовалось ни одного крошечного повреждения ещё на момент прокладки кабеля?
    Ответ написан
    4 комментария
  • Усиливает ли коммутатор сигнал ethernet?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Коммутатор - это не ретранслятор. Он полностью принимает пакет с одного порта, анализирует MAC получателя и передаёт пакет в другой порт (или другие порты).
    Если уровень помех не позволит принять пакет без ошибок, то пакет дальше не пойдёт. Если пакет принят, то он будет отправлен без искажений.
    В любом случае, стоит рассмотреть оптический линк между зданиями. Он не так ограничен по длине, как медь, не подвержен электромагнитным помехам и может дать большую скорость.
    Ответ написан
    5 комментариев
  • Усиливает ли коммутатор сигнал ethernet?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Если я вставлю в каждом 100метре один коммутатор

    то будет полная фигня и отсутсвие линка. Задача решается принципиально другим способом.

    - берется план завода
    - выделяется место для создания центрального узла (серверная) в соттветствии с местнвми реалиями. Поскольку сама по себе сеть нафиг не нужна - значит, она тянется для чего-то. Значит, сервера будут.
    - от серверной в локальные узлы (точки расположения управляемых коммутаторов) тянется оптика. На относительно небольшое расстояние пойдет более дешевая многомодовая..
    - от локальных коммутаторов растягивается сеть
    - если хотите бить на сегменты - бить можно на центральном узле, поставив туда микротик
    Ответ написан
    2 комментария
  • Усиливает ли коммутатор сигнал ethernet?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) Да, коммутаторы можно вещать цепочкой. Усиливать сигнал никто не будет, коммутатор будет ретранслировать пакеты. При этом будут задержки, которые скажутся впоследствии...
    Тем самым, установив с штук 10-12 коммутаторов можно пройти 1 километр.
    Но!
    2) 1 километр и не только лучше и гораздо дешевле пройти оптикой!

    Причем на предприятии делать это гораздо правильнее. Ибо сразу решаете кучу проблем и с навидками, и с дальнейшим расширением, и с электрической развязанностью.

    Оптику прокладывать легко и просто, тянется также, как и обычный кабель.
    На финишном этапе приглашаете мужика со сварочным аппаратом для разварки волокон в пигтейлы и разъемы.

    У нас оптика везде, даже между этажами и серверными. UTP подведены толкьо к рабочим местам и внутри шкафов и сервеных.
    Ответ написан
    6 комментариев
  • Усиливает ли коммутатор сигнал ethernet?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    1. Коммутаторы нельзя бесконечно цеплять один за другим гирляндой. Формально можно вешать 7 коммутаторов один за другим (включая головной).
    spoiler
    Я бы не советовал на практике делать более 3 хопов, т.е. голова и два уровня коммутаторов; это моё субъективное мнение.

    2. Вам необходимо сделать «звезду» из оптического многопортового коммутатора концентрации (расположенного в серверной или в телекоммуникационном шкафу) и в каждый порт подключить по оптике коммутатор доступа с медными портами, расположенный в телекоммуникационном ящике в непосредственной близости от потребителя (до 100 метров). Каждый коммутатор должен питаться от ИБП. Кабели «витая пара» на заводе рекомендуется использовать экранированные, при этом очень важно правильно их заземлять, иначе будет только хуже.
    3. Это серьезная задача, своими силами вы такую задачу не решите (иначе уже бы решили). Рекомендую нанять профессионалов по созданию СКС.
    Ответ написан
  • Как добавить значение в файл json через python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Простыми словами:
    • Загружаете JSON, получаете dict (словарь)
    • Вносите в словарь необходимые изменения, в вашем случае my_dict.update({number:{…: …}})
    • Сохраняете словарь в виде JSON.


    Загружаете через json.load или json.loads, обратно преобразуете json.dump или json.dumps
    Ответ написан
    1 комментарий
  • Провайдеры, которые подключают интернет по воздуху?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    На 20 км. радиосвязь на высокой скорости… это вам надо строить вышку, чтобы на пути ничего не было, ни крон деревьев, ничего - прямая видимость. И с той стороны тоже. На вышки размещать Ubiquiti AirFiber или что-то сравнимое.
    Общая цена с работами будет под миллиона полтора - два рублей, не считая мелочей - получения землеотводов под вышки, получения разрешений и согласования ото всех подряд - мчс, грчц, санэпидем, фсб и т.п. Естественно, проект и всё такое.
    Плюс никогда не надо забывать, что это надо обслуживать и охранять. Иначе скоро все накроется.

    Мне кажется, в те же деньги можно проложить оптику в грунте, ну тут тоже будут сложности с дорогами, трубопроводами, кабелями и пр.
    Ответ написан
    Комментировать
  • Как принимать только уникальных пользователей?

    Vindicar
    @Vindicar
    RTFM!
    CREATE TABLE IF NOT EXISTS accounts (
                    id INTEGER PRIMARY KEY AUTOINCREMENT, 
                    users_name TEXT, 
                    acc_id INTEGER
    )

    Doplis01, ну вот и результат. Если у тебя УЖЕ ЕСТЬ уникальное для каждого пользователя целое число acc_id (естественный ключ), зачем ты добавил синтетический ключ id? Просто переделай таблицу, выкинь id, сделай acc_id PRIMARY_KEY без автоинкремента.
    Ответ написан
    2 комментария
  • Почему съезжает последний элемент?

    Vindicar
    @Vindicar
    RTFM!
    " "*(len(str(len(filenames)))-len(str(i+1)))
    1. Открой для себя переменное выравнивание в форматировании
    2. Открой для себя join()
    3. Открой для себя второй параметр enumerate()

    max_index_len = len(str(len(filenames)))
    m = '\n'.join([
        f"{i:>{max_index_len}}. {filename}" 
        for i, filename in enumerate(filenames, 1)
    ])
    Ответ написан
    4 комментария
  • Как сделать рандомное число без повторений при вызове функции?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Странные ответы тут приводят.
    import random
    lst = list(range(1, 5+1))
    random.shuffle(lst)

    Так у вас в списке будет случайно перемешанная последовательность.
    Но у вас есть требование (не знаю насколько оно осозанное), чтобы это была непременно функция.
    Надо понимать, что такая функция не будет чистой. Она должна выдать конечное количество разных значений и её придётся вернуть исключение, если от нее потребуют больше очерендым вызовом. Сделать это можно с помощью генератора.
    def make_shuffled_gen(a, b):
        lst = list(range(a, b + 1))
        random.shuffle(lst)
        yield from lst
    
    shuffled_getter = make_shuffled_gen(1, 5).__next__


    Ну или одним выстрелом:
    def make_shuffled_getter(a, b):
        lst = list(range(a, b + 1))
        random.shuffle(lst)
        return iter(lst).__next__
    
    shuffled_getter = make_shuffled_getter(1, 5)
    Ответ написан
    3 комментария
  • Как сделать рандомное число без повторений при вызове функции?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Если вы хорошо подумаете, вы поймёте, что это практически тоже самое, что просто взять список уникальных значений, случайным образом перемешать его и вывести. Никакой принципиальной разницы по результату нет. Тогда зачем все усложнять? Шафл решит вашу проблему.
    Ответ написан
    4 комментария
  • Как создать свой JSON и получить доступ к значению по ключу?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Зачем-то превращаете словарь (из которого уже можно взять ключ) в строку, затем строку в байты, затем байты обратно в строку.
    answer = {
            "id": "12",
            "status": "Готов",
            "url": "vk.com"
        }
    print(answer['id'])
    Ответ написан
    Комментировать