Eigene class Definitionen, eigene Attribute ... es ist durchaus üblich, Daten so zu speichern. Beispiel:
1 class nasenbaer:
2
3 def __init__(self, alter=26, name="Karlchen"):
4 self.alter = alter
5 self.name = name
... jedes nasenbaer-Objekt hat nun in den Attributen alter und name die jeweiligen Werte gespeichert, neue Nasenbaeren macht man mit
1 sonja = nasenbaer(32, "Sonja")
Soooo... Pythons Eleganz erlaubt auch weitere Attribute...
1 sonja.haarfarbe = "blond"
nun hat der Nasenbaer Sonja die Haarfarbe blond. AAABER ... was kommt raus, wenn wir den Nasenbaer anzeigen lassen???
1 print sonja
2 <__main__.nasenbaer instance at 0x01764FD0>
Natoll. Und welche Haarfarbe hat Nasenbaer Sonja????
NUN kommt die Rettung!!!
1 class nasenbaer:
2
3 def __init__(self, alter=26, name="Karlchen"):
4 self.alter = alter
5 self.name = name
6
7 def __repr__(self):
8 return self.__class__.__name__ + "(%r, %r)" % (self.alter, self.name)
9
10 def __str__(self):
11 return "\n".join(["%s: %s" % (k,v) for k,v in self.__dict__.iteritems()])
und wiederum
1 sonja=nasenbaer(32,"Sonja")
2
3 print sonja
4 haarfarbe: blond
5 alter: 32
6 name: Sonja
7
8 print repr(sonja)
9 nasenbaer(32, "Sonja")
Der Unterschied zwischen __repr__ und __str__ ist, dass ersteres versucht einen String auszugeben, der von Python wieder verstanden wird, während __str__ für den Menschen verständlich sein sollte. So könnte __repr__ als einfache Methode verwendet werden um Daten in eine Datei zu speichern.