• Почему python возвращает существующий объект, вместо создания нового?

    1na1
    @1na1 Автор вопроса
    Спасибо! Про эту особенность не знал, теперь логика ясна)

    >>> [object() for _ in range(3)]  # Три разных объекта
    [<object object at 0x000001FEC2168980>, <object object at 0x000001FEC2168930>, <object object at 0x000001FEC2168970>]
    >>>
    >>> [id(object()) for _ in range(3)]  # Один объект трижды
    [2193689577824, 2193689577824, 2193689577824]
    Написано
  • Почему http.server отвечает через две секунды?

    1na1
    @1na1 Автор вопроса
    Это помогло, спасибо большое!

    Желательно правда объяснить или сказать что читать. Почему Postman не ждёт DNS?

    В общем побежал гуглить, мне в голову не приходило, что localhost может резолвиться две секунды)
    Написано
  • Как хранить константы в python?

    1na1
    @1na1 Автор вопроса
    Прочитал гайд и осознал, что классы мне не нужны, не пользуюсь функионалом класса и эта прослойка лишняя. Константы теперь буду хранить прямо в .py файле.

    Спасибо, очень полезно

    Было
    # TimeFrames.py
    
    class TimeFrames:
        FILE_EXCHANGE: int = 30
        DATABASE_REQUEST: int = 30
        API_CALL: int = 10
        MAIL_DELIVERY: int = 180


    Стало
    # TimeFrames.py
    
    FILE_EXCHANGE: int = 30
    DATABASE_REQUEST: int = 30
    API_CALL: int = 10
    MAIL_DELIVERY: int = 180


    В новом подходе импорт упростился и стал более естественным
    from path.to.constants.TimeFrames import TimeFrames  # Было
    
    from path.to.constants import TimeFrames  # Стало
    Написано
  • Как хранить константы в python?

    1na1
    @1na1 Автор вопроса
    Спасибо, Сергей!

    Секреты или что-то чувствительное в коде конечно не храню) В основном там у меня что-то из публичных документов - спецификаций и др. Но тут соглашусь, что даже около-секреты в коде - такое себе удовольствие и не всегда на первый взгляд можно отличить одно от другого, тем более, что даже публичные данные могут стать секретными.

    Абсолютно верное видение про настройки. У меня это настройки и мой подход требует обязательного перезапуска для смены настроек, иначе никак. Но у меня конечно и не интерпрайз, а зоопарк инструментов автоматизации)

    Вопрос закрываю т.к. получил достаточно классных, профессиональных рекомендаций и даже ссылку
    Написано
  • Как хранить константы в python?

    1na1
    @1na1 Автор вопроса
    Спасибо! Почитаю про etcd. А в Enum пока упираюсь в однотипность подхода - не получается так одновременно хранить строки и числа в разных полях одного Enum. Почитаю, спасибо за наводку
    Написано
  • Как хранить константы в python?

    1na1
    @1na1 Автор вопроса
    Спасибо, Максим! По описанию прямо то, что нужно)
    Написано
  • Как в связать объекты в PyQt?

    1na1
    @1na1 Автор вопроса
    Лучше поздно, чем никогда: большое спасибо за простое, изящное решение!
  • PyQt5 или PySide 2?

    Руслан, большое спасибо!
  • Создание класса?

    И обязательно пойми что такое self. Это одна из важнейших частей всего языка.
  • Как открыть новое окно по клику на пункт в menuBar?

    self.actionAbout.clicked.connect(self.show_about_window) - правильно. Не забудь создать метод show_about_window.
  • Как открыть новое окно по клику на пункт в menuBar?

    Привет!

    Для того, чтобы иметь возможность дописывать свой код, не вмешиваясь в сгенерированный код main_window, нужно создать свой собственный класс, который будет наследоваться от сгенерированного кода и уже в своем .

    Вот пример:

    #
    # Создаем отдельный файл, в котором будет наш класс
    # Этот класс будет наследоваться от Ui_MainWindow и QMainWindow
    #
    
    from main_window import Ui_MainWindow  # Импортируем main_window для наследования
    from PyQt5.QtWidgets import QMainWindow  # Наш класс должен быть также унаследован от QMainWindow
    
    class MyMainWindow(Ui_MainWindow, QMainWindow):  # Создаем свой класс, который наследует все свойства main_window
        def __init__(self):  # Коструктор
            super(MyMainWindow, self).__init__()  #  Создаем объект суперкласса
            Ui_MainWindow.setupUi(self, self)  # Создаем виджеты главного окна
            # Подготовительная работа закончена, переходим к расширению функционала окна
    
            # Соединяем клик actionAbout с методом show_about_window
            self.actionAbout.clicked.connect(self.show_about_window)
            # Выполняем другие расширения функционала
            # ...
            # ...
           
        # Создаем метод, который покажет окно about
        def show_about_window(self):  # Выполняется всякий раз при клике на menuBar 
            about = about_window()  # Создать окно About
            about.exec_()  # Показать окно About
    
    
    # Код запуска приложения в отдельном файле
    application = QApplication(argv)
    main_window = MyMainWindow()  # Тут указывам наш новый класс - MyMainWindow, НЕ автосгенерированный main_window
    main_window.show()
    exit(application.exec_())