powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python: как код разделить на имплементацию и интерфейсы?
7 сообщений из 7, страница 1 из 1
Python: как код разделить на имплементацию и интерфейсы?
    #39731277
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В С++ есть возможность создавать пространства имен, внутри которых определять процедуры и классы. Это позволяет отделить "низкоуровневый" код от интерфейса. Понимаю, что в Python можно создавать дополнительные модули (например, с постфиксом dev от слова development) и их импортировать в модули с интерфейсами, а последние импортировать в потребителя функционала. Но тогда в дереве модулей будет очень много лишних файлов и надо будет постоянно переключаться между файлами (чтобы посмотреть как все это реализовано).

Есть какое- то решение?
...
Рейтинг: 0 / 0
Python: как код разделить на имплементацию и интерфейсы?
    #39731341
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

использование принципа "программируйте в соответствии с интерфейсом, а не с реализацией" позволяет создавать более гибкий дизайн приложения, разгрузить голову разработчика и улучшить коммуникации внутри команды.
Все это делает систему более пригодной для поддержки и добавления новой функциональности.
В Python нет ключевого слова interface , но есть другие способы реализации принципа: отражающие суть названия, устранение неявных зависимостей и использование абстрактных классов.

https://habr.com/post/332578/
...
Рейтинг: 0 / 0
Python: как код разделить на имплементацию и интерфейсы?
    #39731348
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий МухAlekseySQL,

использование принципа "программируйте в соответствии с интерфейсом, а не с реализацией" позволяет создавать более гибкий дизайн приложения, разгрузить голову разработчика и улучшить коммуникации внутри команды.
Все это делает систему более пригодной для поддержки и добавления новой функциональности.
В Python нет ключевого слова interface , но есть другие способы реализации принципа: отражающие суть названия, устранение неявных зависимостей и использование абстрактных классов.

https://habr.com/post/332578/

Спасибо, но это все и так понятно. Вопрос в другом: при использовании абстрактного класса нам будет виден как он, так и конкретные реализации, что засоряет глобальное пространство имен. Хочется отделить "кишки", от интерфейса.
...
Рейтинг: 0 / 0
Python: как код разделить на имплементацию и интерфейсы?
    #39732661
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLДмитрий МухAlekseySQL,

использование принципа "программируйте в соответствии с интерфейсом, а не с реализацией" позволяет создавать более гибкий дизайн приложения, разгрузить голову разработчика и улучшить коммуникации внутри команды.
Все это делает систему более пригодной для поддержки и добавления новой функциональности.
В Python нет ключевого слова interface , но есть другие способы реализации принципа: отражающие суть названия, устранение неявных зависимостей и использование абстрактных классов.

https://habr.com/post/332578/

Спасибо, но это все и так понятно. Вопрос в другом: при использовании абстрактного класса нам будет виден как он, так и конкретные реализации, что засоряет глобальное пространство имен. Хочется отделить "кишки", от интерфейса.

Что значит «будет виден»? Разнеси интерфейс и реализацию по разным пакетам/модулям, не будет никакого общего пространства имён.
...
Рейтинг: 0 / 0
Python: как код разделить на имплементацию и интерфейсы?
    #39733041
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядькаЧто значит «будет виден»? Разнеси интерфейс и реализацию по разным пакетам/модулям, не будет никакого общего пространства имён.

Я в топике написал, что этот вариант плох тем, что в дереве модулей будет избыточное количество файлов + периодически надо будет открывать имплементацию, чтобы посмотреть как это реализовано.
...
Рейтинг: 0 / 0
Python: как код разделить на имплементацию и интерфейсы?
    #39733050
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLЛысый дядькаЧто значит «будет виден»? Разнеси интерфейс и реализацию по разным пакетам/модулям, не будет никакого общего пространства имён.

Я в топике написал, что этот вариант плох тем, что в дереве модулей будет избыточное количество файлов + периодически надо будет открывать имплементацию, чтобы посмотреть как это реализовано.
Ты опять на пустом месте заводишь дискуссию, ни к чему не ведущую. Тебе уже сказали:
Выноси логику в приватные модули, например, имя которых начинается с символа подчёркивания.

Выставляй у нужных объектов интерфейса аттрибут __slots__, в т.ч. и у самих модулей.

Исследуй как это сделано у крупных проектов.
...
Рейтинг: 0 / 0
Python: как код разделить на имплементацию и интерфейсы?
    #39737582
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел, что это делается с помощью списка __all__, который можно задать для каждого модуля или с помощью префикса в виде знака подчеркивания для скрытых переменных / функций / объектов модуля. Написано это в книжке Слаткина "Секреты Python, 59 рекомендаций по написанию эффективного кода", на странице 225.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python: как код разделить на имплементацию и интерфейсы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]