Je suis chargé de créer un modèle de cage de matériel. Chaque cage contient N emplacements, chaque emplacement peut contenir ou non une carte. Je voudrais modéliser la cage à l'aide d'une liste.Comportement de compréhension de liste de surcharge?
Chaque index de liste correspondrait au numéro d'emplacement. cards[0].name="Card 0"
, etc.
Cela permettrait à mes utilisateurs d'interroger le modèle via de simples listes de compréhension. Par exemple:
for card in cards:
print card.name
Mes utilisateurs, qui ne sont pas sophistiqués utilisateurs de Python, interagiront avec le modèle en temps réel, il est donc pas pratique d'avoir l'index de la liste correspondent pas à une carte peuplée. En d'autres termes, si l'utilisateur enlève une carte, je dois faire quelque chose qui indiquera que la carte n'est pas remplie — ma première impulsion était de mettre l'élément de la liste à None
. Le Bossman aime ce schéma, mais il n'est pas fou de la compréhension de la liste ci-dessus échouant s'il y a une carte manquante. (Ce qu'il fait actuellement.) Il est encore moins favorable à ce que les utilisateurs aient besoin d'apprendre suffisamment de Python pour créer des expressions de compréhension de liste qui ignoreront None
.
Ma pensée était de sous-classer la classe list
, pour créer un newclass
. Cela fonctionnerait exactement comme une liste, sauf que for card in cards
ne retournerait que les membres non définis à None
.
Quelqu'un va-t-il montrer comment surcharger la classe de liste afin que les compréhensions de liste appelées dans la sous-classe ignorent None
? (Mes compétences en Python ont déjà commencé à s'effondrer quand j'essaye cela.)
Quelqu'un peut-il suggérer une meilleure approche?
Pouvez-vous décrire vos 'cartes'? Sont-ils des dictionnaires? Instances de classe? –