python как абстрагировать класс переменной-члена

#python #interface #architecture #abstraction

Вопрос:

предположим, что у меня есть модуль, как показано ниже

 class B:
  def ...
  def ...

class A:
  b: B

  def ...
  def ...
 

Я использую класс B только в качестве переменной-члена класса A

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

  1. один большой интерфейс, который имеет абстрактный метод для классов A и B
  2. два интерфейса, которые имеют абстрактный метод для класса A и класса B по отдельности
  3. все вышесказанное неверно. другой способ

Комментарии:

1. Я не думаю, что понимаю, какую проблему вы пытаетесь решить, но в любом случае это не по теме для переполнения стека. Здесь не место задавать субъективные вопросы о дизайне кода.

2. @KarlKnechtel я просто создаю лучшую архитектуру для своего SW. я новичок в дизайне SW, но сейчас мне нужно сделать SW в реальном мире на работе. поэтому, прежде чем принять решение, я хотел бы получить несколько советов. я не знал, что не должен задавать субъективный вопрос о дизайне кода в stackvoverflow. если я вас побеспокоил, извините

Ответ №1:

Оба, 1 и 2, являются правильным подходом, но это полностью зависит от вашего приложения.

Я думаю, что два интерфейса, которые имели бы абстрактный метод для класса A и класса B по отдельности, являются правильным подходом, когда оба ваших класса работают отдельно и полностью отличаются друг от друга.

Но, как вы упомянули в своем коде, вы унаследовали класс B в классе A. Если вы создадите единый интерфейс для класса A, он также позволит вам получить доступ к методам из класса B. Таким образом, этот подход хорош. Кроме того, такой подход сократит длину вашего кода, что приведет к быстрой обработке.

Я надеюсь, что это поможет вам принять решение. Дайте мне знать, если потребуются какие-либо другие разъяснения.

Комментарии:

1. спасибо вам за ответ. я думаю, что в этом случае подходит 2 отдельных интерфейса