Code: Alles auswählen
>>> class NameManager(object):
... names = []
... def add_name(self, name):
... self.names.append(name)
...
>>> women = NameManager()
>>> women.add_name('Peggy')
>>> women.add_name('Sandra')
>>> women.names
['Peggy', 'Sandra']
>>> men = NameManager()
>>> men.add_name('Barney')
>>> men.add_name('Paul')
>>> women.names
['Peggy', 'Sandra', 'Barney', 'Paul']
Code: Alles auswählen
>>> class CorrectNameManager(object):
... def __init__(self):
... self.names = []
... def add_name(self, name):
... self.names.append(name)
...
>>> women = CorrectNameManager()
>>> women.add_name('Peggy')
>>> women.add_name('Sandra')
>>> women.names
['Peggy', 'Sandra']
>>> men = CorrectNameManager()
>>> men.add_name('Barney')
>>> men.add_name('Paul')
>>> women.names
['Peggy', 'Sandra']
>>> men.names
['Barney', 'Paul']
Und falls das Vorgehen noch nicht so ganz klar geworden sein sollte: Klassenattribute sind quasi statisch, d.h. du kannst sie im Prinzip immer ändern. Selbst so etwas ginge:
Code: Alles auswählen
>>> class Foo(object):
... bar = []
... def give_bar(self):
... return self.bar
...
>>> foo = Foo()
>>> foo.give_bar()
[]
>>> foo2 = Foo()
>>> foo2.bar.append('spam')
>>> Foo.bar.append('eggs')
>>> foo.give_bar()
['spam', 'eggs']