Python: один и тот же класс под разными именами в разных подпакетах - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть пакет python, содержащий два подпакета:

my_package
    sub_package_A
    sub_package_B

Я хочу иметь возможность импортировать подпакеты индивидуально извне, как в

import my_package.sub_package_a
import my_package.sub_package_b

Теперь есть один класс, который требуется обоим подпакетам. Для согласованности класс должен отображаться в sub_package_A как MyClassA и в sub_package_B как MyClassB, но код для обоих идентичных 1: 1.

Уродливый, DRY -совместимый подход заключается в том, чтобы объединить два почти идентичных файла внутри каждого подпакета и повторить тонны кода:

my_package
    sub_package_A
        my_class_a.py  # same content as my_class_b.py, but different class name
    sub_package_B
        my_class_b.py  # same content as my_class_a.py, but different class name

Я мог бы также представить общий пакет, содержащий класс как обобщенный c прототип, а затем использовать наследование для создания спецификаций c копий:

my_package
    common_package
        my_class.py    # contains the code for MyClass
    sub_package_A
        my_class_a.py  # "class MyClassA(common.myclass): ..."
    sub_package_B
        my_class_b.py  # "class MyClassB(common.myclass): ..."

Существуют ли какие-либо стандартные / рекомендуемые способы достижения моей цели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...