Лучшая практика Python для создания класса, который объединяет много разных типов классов с одной и той же базой - PullRequest
0 голосов
/ 03 мая 2018

Какова лучшая практика в Python для создания класса, объединяющего много разных типов классов с одним и тем же базовым классом?

В моей конкретной ситуации у меня есть базовый класс (1-й уровень), который представляет обобщенный поток данных, и несколько классов (2-й уровень), которые наследуются от этого базового класса, которые представляют различные типы источников данных. Я хотел бы создать класс, который наследуется от 1-го или 2-го уровня и выполняет некоторую задачу с данными, поступающими из одного из источников, определенных во 2-м уровне. Я использую библиотеку, поэтому не могу изменить эту структуру между этими двумя слоями классов.

Два способа, которыми я думал об этом, были либо:

  1. Создать MetaClass, где я могу создать класс во время выполнения, который будет наследовать динамически от одного из 2-го уровня классов. Так будет автоматически использовать методы своего базового класса во 2-м слое. Хотя как мне не создавать экземпляр MetaClass? когда я определю сам класс? И как мне сделать MetaClass для установить суперкласс класса?
  2. Создать класс, который наследуется от 1-го уровня, имеет член переменная это экземпляр класса 2-го уровня. Хотя я бы необходимо создать метод для каждого, который определен во 2-м слое и называет это.

1 Ответ

0 голосов
/ 03 мая 2018

Лично я предпочту второй вариант. Девиз Python: «Явный лучше, чем неявный», поэтому я думаю, что лучше вручную направлять вызовы различных методов на методы объекта-члена.

Конечно, если методов много, автоматическая маршрутизация методов может быть интересна ...

...