# -*- coding: utf-8 -*- # mehrdimensionale Arrays mit Python 2.2, die für # ihre Elemente wechselnde Variablentypen zulassen class varioarray(dict): def __init__(self, maxtupel, dummy = ' '): dict.__init__(self) self.max = maxtupel self.dimension = len(self.max) self.dummy = dummy def test(self, index): if len(index) <> self.dimension: print 'dimension error' return 1 == 2 for i in range(0, self.dimension): if (index[i] > self.max[i]) or (index[i] < 0): print 'overflow error' return 1 == 2 return 1 == 1 def __getitem__(self, index): if self.has_key(index): return dict.__getitem__(self, index) else: if self.test(index): return self.dummy def __setitem__(self, index, wert): if self.test(index): dict.__setitem__(self, index, wert) # Beispiel: m = varioarray([5, 6, 2], 'None') """ das Setzen des Dummys ist nicht zwingend im constructor ist ' ' voreingestellt wie bei üblichen Feldinitialisierungen könnte er auch den Wert Null bekommen """ m[1, 2, 1] = '$$$$$' # hier als Zeichenkette m[1, 6, 1] = -12345 # hier als Integer print 'Definierte Groesse: ', m.max print "Dimensionen:", m.dimension print "Die wirklichen Einträge: ", m print s = '' print 'Beispielzeile [1, x, 1], x von 0 bis 6:' for i in range(0, 7): print m[1, i, 1], print s wait = raw_input('enter') # kleine Bremse für das Kommandozeilenfenster :-)