Задать вопрос
Ответы пользователя по тегу Python
  • Как получить конкретный атрибут приложенный в обьект?

    Maksim_64
    @Maksim_64
    ML Engineer
    Твоя задача, однозначно решается по другому и вряд ли твой или мой код имеет хоть какой то практический смысл.

    Когда ты наследуешься, то ты наследуешь в том числе атрибуты класса. То есть вот это условие у тебя не выполняется
    if not hasattr(cls, 'Команды'): просто return смысла не имеет ты там должен делать что то с классом который наследовался от твоего. Дальше без комментариев, смысла в твоих действиях нет.

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

    class Система:
        """Группа команд."""
    
        Команды = {}
    
        def __init__(self, *args, **kwargs):
            pass
    
        def пользовательИмеетДоступ(self, bot, event):
            return True
    
        def __init_subclass__(cls, *args, **kwargs):
            super().__init_subclass__(**kwargs)
            if any("Команды" in base.__dict__ for base in cls.__mro__[1:]) and "Команды" not in cls.__dict__:
                setattr(cls, "Команды", None)
    
    class Another(Система):
        # Команды = {"Команда 1": 'тест'}
        pass
    
    print(getattr(Another, 'Команды'))


    Вот так мы получим следующее поведение, твоя строка будет возвращать None, как ты и хотел. Если же ты переопределишь, в дочернем классе, то команда вернет его значение.
    Ответ написан
    Комментировать
  • Ошибка IndexError: string index out of range в написании реализации системы Линденмайера – от чего происходит и как исправить?

    Maksim_64
    @Maksim_64
    ML Engineer
    Пытался самостоятельно реализовать код для рисования фрактальных фигур с помощью системы Лиденмайера
    А почему элементарно дебажить не пробовал, посмотреть как изменяется длинна self.axiom и j?

    если для тебя новость, что длинна self.axiom не постоянна, то посмотри ты же его переопределяешь после match case.
    Ответ написан
    1 комментарий
  • Не копятся ли строки в памяти при работе с python?

    Maksim_64
    @Maksim_64
    ML Engineer
    Нет при такой конструкции, не копятся.

    У каждого объекта в памяти есть счетчик указателей, когда он равен нулю, объект уничтожается. По тому что нет возможности к нему обратится. Упрощенное правило, если ты не можешь обратится к объекту он будет уничтожен.

    html (упрощенно это именованный указатель на адресс в памяти) = myData.text (сам объект)
    html - это выполнится потом = myData.text - сначала выполнится эта часть кода. счетчик = 1
    html = html.replace('rub', 'руб') сначала выполнится эта часть кода. счетчик = 1 при этом myData.text - счетчик для этого объекта стал 0, он уже навсегда потерян.

    del html - сам по себе не удаляет объект, а понижает счетчик на один, что в свою очередь, если у объекта, только один именованный указатель приведет к удалению.

    Это упрощенно, у этого есть свои нюансы, связанные с оптимизацией. Плюс в первую очередь для понимания поведения объектов надо учитывать мутабельность/не мутабельность.
    Ответ написан
    Комментировать
  • Как получить детальные данные по лицу с фото?

    Maksim_64
    @Maksim_64
    ML Engineer
    То что ты описываешь называется эмбеддинг. Затем эти самые эмбеддинги используются для распознавания, нахождение ближайших эмбеддингов.

    https://pypi.org/project/deepface/
    Это набор моделей с простым интерфейсом не оптимизированным под GPU. Можно даже эмоции извлекать, можно координаты где лицо или лица на фото, пол, и т.д.
    Ответ написан
    Комментировать
  • Извлечение таблиц со спецификациями из PDF чертежей металлоконструкций - решаемо? Или я встрял?

    Maksim_64
    @Maksim_64
    ML Engineer
    Было дело работал с российскими нормативными документами гостами. По сталям и фиттингам для трубопроводов.

    1. Качество pdf очень важная история. Если совсем плохое парсер не возьмет (нужно искать в интеренте) есть открытые нормативные базы.
    2. парсеры (tabula, camelot) с множеством настроек, в зависимости от того, как настроишь зависит практически все.
    3. Ну и pandas обе библиотеки вернут список с дата фреймами, где фрейм это каждая таблица. Обычно требует много пост процессинга, например две таблицы на странице а их конкатенировать одна на одну, таблицы имеют "многоуровневую шапку" column multi index на языке пандаса и т.д.

    После пункта три, до желаемого результата одна строчка кода.
    Ответ написан
    Комментировать
  • Как указать модификатор S в re.sub python?

    Maksim_64
    @Maksim_64
    ML Engineer
    показал, бы что именно не сработало, ошибка или нет желаемого результата.

    Напрмер,
    re.findall(pattern, string, flags=0)

    re.sub(pattern, repl, string, count=0, flags=0)

    В первом случае ты указываешь именованный параметр flags, как позиционный, и он оказывается на правильной позиции, во втором случае его позиция на два больше. То есть при вызове метода sub нужно указывать flags как именованный парметр.
    Ответ написан
    1 комментарий
  • Как правильно вывести результат регулярного выражения в Python?

    Maksim_64
    @Maksim_64
    ML Engineer
    Так если ищем паттерн в твоем случае (букву, для поиска буквы регулярка не нужна) в строке, почему match? Замени re.match на re.search, код отработает, но тут опять таки, если он ничего не найдет, то также будет none, добавь условие какое нибудь, например.

    import re
    a = 'samsung'
    b = re.search(r'u', a)
    if b:
        print(b)
        print(b.start())
        print(b.end())
    else:
        print('Паттерн не найден')
    Ответ написан
    7 комментариев
  • Куда надо устанавливать Python и его библиотеки?

    Maksim_64
    @Maksim_64
    ML Engineer
    Правильно создавать виртуальные окружения для каждого проекта и устанавливать библиотеки в виртуальные окружения.

    Учись сразу делать правильно, интернет полон обучающих материалов, как это делать.
    Ответ написан
    6 комментариев
  • Что изучать дальше?

    Maksim_64
    @Maksim_64
    ML Engineer
    Начни и продолжай разрабатывать проект, постепенно увеличивая его сложность и улучшая его качество. Используй git. Многие навыки тяжело развить вне контекста проекта.
    Ответ написан
    Комментировать
  • Какие задачи решают python + ai если говорить о решении задач за деньги в качестве сотрудника или на фрилансе?

    Maksim_64
    @Maksim_64
    ML Engineer
    Задачи? список где в бизнесе не применяется AI будет короче.

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

    Замени, товары на документы, текст, на картинки, звук, видео, любое представление информации. Возможности для бизнеса безграничны.

    ИИ за 24 часа, это всегда потеря времени. Развитие это своего рода, сложный процент + определенный шум. Что бы это работало, нужно основание больше 1 и время. Основание, это математика, и дело не в каких то формулах, а в определенном развитии мышления.
    Ответ написан
    3 комментария
  • Какие ошибки в понимании объектов?

    Maksim_64
    @Maksim_64
    ML Engineer
    (3).__class__- здесь объект создался, затем ты обращаешься к его атрибуту.

    3.__class__ - здесь при его создании произошла ошибка (если быть точным даже на стадии парсинга ошибка), питон пытается спарсить, как float, и у него естественно не получается.
    Ответ написан
    Комментировать
  • Почему self интерпретируется как None в ходе инициализации __init__?

    Maksim_64
    @Maksim_64
    ML Engineer
    Не очень понятно, у тебя есть описание метода __str__, строковое представление объекта, в котором ты описал его логику (в зависимости от значения атрибутов объекта), затем, ты вызываешь print, который автоматически вызывает __str__ и там происходит ровно то что ты описал, то есть print(экземпляр класса) выведет ровно то, что возвращает __str__, если он был определен, если нет то стандартно ссылку в памяти на объект экземпляра.
    Ответ написан
    Комментировать
  • Как можно разбить строку на слова по всем символам?

    Maksim_64
    @Maksim_64
    ML Engineer
    используй регулярные выражения.
    что-то вроде этого.
    re.findall(r"\b\w+\b", string)
    можно и re.split использовать, при желании.
    Ответ написан
    1 комментарий
  • Как нарисовать ёлку вложенным циклом?

    Maksim_64
    @Maksim_64
    ML Engineer
    height = int(input('Введите высоту '))
    for i in range(1,height+1):
        print(f'{"#"*(i*2-1):^{height * 2}}')
    Ответ написан
    Комментировать
  • Как убрать/перенести приложения установленные в conda venv по ошибке или как удалить/очистить base среду в conda?

    Maksim_64
    @Maksim_64
    ML Engineer
    в чем проблема сделать conda deactivate и затем remove (если он позволит удалить базовый). А в чем смысл создай другой активируй да и все.
    Ответ написан
    4 комментария
  • Как мне в Python добавить таблицу, учитывая формулу?

    Maksim_64
    @Maksim_64
    ML Engineer
    Совершенно непонятно формулируешь вопрос.

    1. Кого считать соседями? Если пункт А находится в радиусе или на расстоянии R от пункта B, то они соседи.

    2. Земля не плоская, твоя формула евклидовой дистанции при чем здесь? для расчета дистанций есть другие специальные формулы.

    3.
    Как мне в Python добавить таблицу, которая дублирует первую таблицу, добавляет данные из второй таблицы, учитывая формулу выше.
    Реляционные операции они происходят на основе ключа или ключей. На основании чего ты тут собрался собирать. Ты можешь найти потенциально соседей для любой взятой точки. Возникает вопрос а зачем тогда вообще две таблицы их можно просто слить в одну. Возможно связь есть, а ты о ней не рассказал.

    4. По итогу из того что есть задача видится как нахождения соседей для каждой точки датасета. Я бы брут форсем, такое не решал, а использовал бы базы с approximate nearest neighbor. Построить индексы O(n log(n)), запросы O(log(n) ), ну и вся задача для каждой точки датасета O(n log(n)).

    5. Используй подходящие базы ну или хотя бы geopandas. В этих случаях все инструменты уже есть.
    Ответ написан
    8 комментариев
  • Как сгенерировать промежуточные координаты?

    Maksim_64
    @Maksim_64
    ML Engineer
    import time
    l = [[392,556], [95,309], [207,192]]
    result = [item + [int(time.time() * 1000)] for item in l]
    Ответ написан
    3 комментария
  • Книги для изучения нейронных сетей на Python?

    Maksim_64
    @Maksim_64
    ML Engineer
    Уже отвечал на этот вопрос, пока ничего лучше не вышло.
    Ответ написан
  • Как проверить наличие поля в JSON файле с помощью python?

    Maksim_64
    @Maksim_64
    ML Engineer
    Объекты типа str не имеют метода get, такие методы характерны для маппингов (ключ-значение) напрмиер словарь.
    get("MiddleName") нужно проверять в другом месте, где ты ожидаешь встретить данный ключ.
    Ответ написан
    Комментировать
  • Как сделать, чтобы не было возможности вызвать метод через инстанс?

    Maksim_64
    @Maksim_64
    ML Engineer
    Думаю простого способа нет в силу особенностей дизайна. Объект экземпляра класса, как и объект класса, оба имеют полный доступ к пространству имен объекта класса. По этому думаю решение довольно сложное и того не стоит.
    Ответ написан
    Комментировать