Python-Programmierung: Ableiten von Klassen

Aus Wikibooks

Wechseln zu: Navigation, Suche

<< Inhaltsverzeichnis

Inhaltsverzeichnis

[Bearbeiten] Ableiten von Standardklassen

Hier soll eine Liste entstehen mit Beispielen, die eine Standardklasse (z.B.: list, dict) möglichst vollständig ableiten. Diese Beispiele, sollen als Basis für eigene Klassen dienen.


[Bearbeiten] list

[Bearbeiten] als normale Klasse

class bsp(list):
    def append(self, value):
        print "append:",value
        super(bsp, self).append(value) # append über super aufrufen

    def __str__(self, value=""):
        print "__str__:",
        return list.__str__(self)

    def __getitem__(self, no):
        print "__getitem__[%s]:" % no,
        return list.__getitem__(self, no)
    
    def __getslice__(self, i, j):
        print "__getslice__[%s:%s]" % (i, j)
        return list.__getslice__(self, i, j)

l = bsp()
l.append("TEST1")
print l[0]
l.append("TEST2")
print l

[Bearbeiten] als super Klasse

[Bearbeiten] dict

[Bearbeiten] als normale Klasse



class bsp(dict):
    def keys(self):
        print "keys:",
        return dict.keys(self)

    def __setitem__(self, item, value):
        print "__setitem__[%s]=%s" % (item,value)
        dict.__setitem__(self, item, value)

    def __getitem__(self, key):
        print "__getitem__[%s]:" % key,
        dict.__getitem__(self, key)

    def __str__(self):
        print "__str__:",
        return dict.__str__(self)

    def __len__(self):
        print "__len__:",
        return dict.__len__(self)

    def __delitem__(self, key):
        print "__delitem__[%s]" % key
        dict.__delitem__(self, key)

    def has_key(self, key):
        print "has_key(%s):" % key,
        return dict.has_key(self, key)

    def iteritems(self):
        print "iteritems:"
        return dict.iteritems(self)

    def values(self):
        print "values:",
        return dict.values(self)

d = bsp()
print "01",; d[1]="eins"
print "02",; d["zwei"] = 2
print "03",; print d
print "04",; print d[1]
print "05",; print d.keys()
print "06",; print len(d)
print "07",; del(d["zwei"])
print "08",; print d.has_key("zwei")
print "09",; d[2]="zwei"
print
print "10",
for key, item in d.iteritems():
    print "10", key, item
print
print "11",; print d.values()

Ergebnis-Ausgaben:

01 __setitem__[1]=eins
02 __setitem__[zwei]=2
03 __str__:{1: 'eins', 'zwei': 2}
04 __getitem__[1]: None
05 keys: [1, 'zwei']
06 __len__: 2
07 __delitem__[zwei]
08 has_key(zwei): False
09 __setitem__[2]=zwei

10 iteritems:
10 1 eins
10 2 zwei

11 values: ['eins', 'zwei']

[Bearbeiten] als super Klasse

<< Inhaltsverzeichnis
Persönliche Werkzeuge