Я использую Python 3, но вопрос на самом деле не связан с конкретным языком.
У меня есть class Table
, который реализует таблицу с первичным ключом.Экземпляр этого класса содержит фактические данные (которые очень велики).
Я хочу разрешить пользователям создавать вложенную таблицу, предоставляя фильтр для строк таблицы.Я не хочу копировать таблицу, поэтому я планировал оставить в подтаблице только подмножество первичных ключей из родительской таблицы.
Очевидно, подтаблица - это просто представлениеродительская таблица;он изменится, если изменится родительская таблица, станет недействительным, если родительская таблица будет уничтожена, и потеряет некоторые из ее строк, если они будут удалены из родительской таблицы.[ РЕДАКТИРОВАТЬ : чтобы уточнить, если родительская таблица изменилась, мне все равно, что происходит с подстатьей;любое поведение в порядке.]
Как мне соединить два класса?Я думал о:
class Subtable(Table):
def __init__(self, table, filter_function):
# ...
Мое предположение состояло в том, что Subtable
сохраняет интерфейс Table
, за исключением небольшого переопределения унаследованных методов только для проверки, находится ли строка. Это хорошая реализация?
Проблема в том, что я не уверен, как инициализировать экземпляр Subtable
, учитывая, что я не хочу копировать переданный ему объект таблицы.Это вообще возможно?
Также я подумал дать class Table
метод экземпляра, который возвращает Subtable
instance;но это создает зависимость Table
от Subtable
, и я думаю, что лучше избегать?