Skip to content

Instantly share code, notes, and snippets.

@evertheylen
Created January 12, 2015 17:06
Show Gist options
  • Save evertheylen/f507cf1217efbd4e6ce9 to your computer and use it in GitHub Desktop.
Save evertheylen/f507cf1217efbd4e6ce9 to your computer and use it in GitHub Desktop.
Stel u voor; een simpele tabel van pagina's.
+-----+-----------------------------------------+
| nr | tekst |
+=====+=========================================+
| 1 | "pagina 1 tekst...." |
+-----+-----------------------------------------+
| 2 | "pagina 2 tekst...." |
+-----+-----------------------------------------+
| 5 | "pagina 5 tekst...." |
+-----+-----------------------------------------+
| 10 | "pagina 10 tekst...." |
+-----+-----------------------------------------+
We steken deze data in een datastructuur, genaamd TABEL.
Elke pagina heeft twee attributen (you know, object-georienteerd programmeren):
class Pagina:
def __init__(self, nr, tekst):
self.nr = nr
self.tekst = tekst
Dit kan je ook zien in de tabel vanboven.
Stel nu dat we de volledige pagina op nummer 5 willen weten. In de code doen we dit:
TABEL.retrieve(5)
Visueel kan je het bezien als dit:
+-----+
| 5 | ?
+-----+
+-----+-----------------------------------------+
| nr | tekst |
+=====+=========================================+
| 1 | "pagina 1 tekst...." |
+-----+-----------------------------------------+
| 2 | "pagina 2 tekst...." |
+-----+-----------------------------------------+
| 5 | "pagina 5 tekst...." |
+-----+-----------------------------------------+
| 10 | "pagina 10 tekst...." |
+-----+-----------------------------------------+
De tabelimplementatie moet dan weten welke van de 2 attributes hij moet gebruiken om te vergelijken met de searchkey (5).
Dit wordt gegeven door 'de' self.attribute (aka Name_Of_Attribute_Used_As_Searchkey). In ons voorbeeld zal dit gelijk zijn aan 'nr'.
In een (domme) tabelimplementatie zal het programma dan (bijvoorbeeld) elk mogelijk object afgaan, en vergelijken of de gegeven searchkey overeenkomt met de key van het object. Code:
def retrieve(self, searchkey):
for object in self.underlying_array: # als voorbeeld
if object.__dict__[ self.attribute ] == searchkey:
return object
return None # niets gevonden
Dit stuk code kunnen we ook visueel voorstellen: 'object.__dict__[ self.attribute ] == searchkey'
+-----+
searchkey = | 5 |
+-----+
+-----+-----------------------------------------+ |
| nr | tekst | |
+=====+=========================================+ |
| 1 | "pagina 1 tekst...." | \|/
+-----+-----------------------------------------+ '
| +-----+ +-----+
\_____________________________________________________________\ | 1 | == | 5 |
(geselecteerd door __dict__[self.attribute] / +-----+ +-----+
= "nr" ( --> duidelijk False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment