J'utilise Python 3, mais la question n'est pas vraiment liée au langage spécifique. J'ai class Table
qui implémente une table avec une clé primaire. Une instance de cette classe contient les données réelles (qui sont très volumineuses).Implémentation d'une sous-table (affichage dans une table): conception d'une relation de classe
Je souhaite autoriser les utilisateurs à créer une sous-table en fournissant un filtre pour les lignes de la table. Je ne veux pas copier la table, donc je prévoyais de garder dans la sous-table juste le sous-ensemble des clés primaires de la table parent.
De toute évidence, la sous-table est juste une vue dans la table parent; cela changera si la table parent change, deviendra invalide si la table parent est détruite, et perdra certaines de ses lignes si elles sont supprimées de la table parente. [EDIT: pour clarifier, si la table parente est modifiée, je me fiche de ce qui arrive à la sous-table; tout comportement est correct.]
Comment connecter les deux classes? Je pensais:
class Subtable(Table):
def __init__(self, table, filter_function):
# ...
Mon hypothèse était que Subtable
garde l'interface de Table
, sauf légèrement les méthodes remplace héritées juste pour vérifier si la ligne est Est-ce une bonne mise en œuvre.? Le problème est, je ne sais pas comment initialiser l'instance Subtable
étant donné que je ne veux pas copier l'objet de table qui lui est passé. Est-ce même possible?
Aussi je pensais donner class Table
une méthode d'instance qui renvoie Subtable
instance; mais cela crée une dépendance de Table
sur Subtable
, et je suppose qu'il est préférable d'éviter?
Avez-vous envisagé de déplacer cette structure de données dans une base de données? Python est livré avec 'sqlite3' qui vous permet de créer des DB SQL en mémoire. – katrielalex
Oui, mais pour l'instant décidé de rester avec l'implémentation personnalisée. – max