|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
||||||
Указать тип для self25.06.2025, 04:12. Показов 1501. Ответов 14
Метки аннотация типов (Все метки)
В одной библиотеке видел как для
self указывали тип другого класса и использовали. Выглядело это примерно так
Конкретно мой пример не рабочий, хотя в библиотеке это схема работала. Гугл слабо помогает в этом вопросе, единственное что нашел похоже на доку, хотя там упоминаются классы Self и TypeVar, что в читаемой мною библиотеке я не наблюдал. Просто хочется понять, что это, как это работает и что я упустил в своем примере?
0
|
||||||
| 25.06.2025, 04:12 | |
|
Ответы с готовыми решениями:
14
Для чего служит ключевое слово «self». Например, def __init__(self):? __init__(self, winner, year, category) ;__str__(self) Что такое self.assertEqual() из unittest? |
|
115 / 100 / 15
Регистрация: 24.07.2019
Сообщений: 309
|
|
| 25.06.2025, 05:24 | |
|
почему во втором классе нет инициализатора?
0
|
|
|
Автоматизируй это!
|
||
| 25.06.2025, 07:49 | ||
|
То есть или наследование и его фишки или передавать объект другого класса в метод/инит
1
|
||
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
||||||||
| 25.06.2025, 08:19 [ТС] | ||||||||
|
2) Расширение функционала уже имеющихся классов из библиотек, которые были заброшены а новый функционал нужен (для этого и были придуманы методы расширения в шарпе) Почему нельзя передать объект и работать с ним как обычной функцией - так то оно можно, вопрос в деликатности кода. Чуть поменяю пример и допустим хотим добавить юзеру функцию ходить. Как это будет выглядеть
0
|
||||||||
|
Автоматизируй это!
|
||||
| 25.06.2025, 08:29 | ||||
|
Enifan, я не знаю о каких исходниках ты говоришь, потому тут прокомментировать не могу
3
|
||||
|
126 / 185 / 16
Регистрация: 08.10.2024
Сообщений: 689
|
|
| 25.06.2025, 09:18 | |
|
без исходника это анализировать сложно. Аннотация self имеет смысл только при наследовании от аннотированного класса, в данном случае линтер всегда будет давать ошибку.
0
|
|
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|||||||
| 26.06.2025, 07:11 [ТС] | |||||||
main - это классика для полиморфизма, но чтобы такое использовать в реализации... Имел дело с несколькими языками на любительском уровне - но такое встречаю впервые. Стоит отметить что данных подход имеет цикличный импорт.Такой подход помогает как бы "разбить" класс на несколько, используя реализацию в разных файлах. Конкретно в данной библиотеке все эти классы по типу Go, Eat - это запросы на сервер, и каждый из них требует своей реализации. И таких запросов прям очень много, не менее 100. Вероятно такой подход оправдан, чем все эти функции пихать в один класс.Если есть комменты, идеи и тд - жду
0
|
|||||||
|
Автоматизируй это!
|
||
| 26.06.2025, 10:34 | ||
|
если классу Client нужно только поведение, то можно использовать Protocol а не наследование
0
|
||
|
126 / 185 / 16
Регистрация: 08.10.2024
Сообщений: 689
|
|
| 27.06.2025, 10:00 | |
|
Такая аннотация прямо нарушает принцип инверсии зависимостей из SOLID и крайне не рекомендуется.
Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций. Как уже правильно указал Welemir1, лучше протоколы или миксины
0
|
|
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|||||||||||||||||||
| 14.07.2025, 22:35 [ТС] | |||||||||||||||||||
|
Почитав либу чуть побольше - увидел еще один момент
Client не только делает обращение на сервер, но и иногда возвращает текущий объект (если в этом есть смысл). Например для класса Go только отправить данные на сервер, без возврата данных.
Вообще судя по всему, я бы перефразировал задачу: "Как реализовать функцию класса в другом файле file.py?" Пока что только "неверная реализация" такое может сделать, по крайней мере я не увидел другого способа
0
|
|||||||||||||||||||
|
126 / 185 / 16
Регистрация: 08.10.2024
Сообщений: 689
|
|||
| 15.07.2025, 08:56 | |||
|
Подытоживая, для того, чтобы
0
|
|||
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|
| 15.07.2025, 22:11 [ТС] | |
|
0
|
|
|
126 / 185 / 16
Регистрация: 08.10.2024
Сообщений: 689
|
||
| 15.07.2025, 23:01 | ||
|
0
|
||
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|
| 15.07.2025, 23:04 [ТС] | |
|
0
|
|
|
126 / 185 / 16
Регистрация: 08.10.2024
Сообщений: 689
|
|
| 16.07.2025, 10:11 | |
|
0
|
|
| 16.07.2025, 10:11 | |
|
Помогаю со студенческими работами здесь
15
Ошибка: super(Connection, self).__init__(*args, **kwargs2). TypeError: keywords must be strings
Что такое "self"? __init__(self): Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|