Python-Programmierung: Ableiten von Klassen
Aus Wikibooks
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