Seite 1 von 1

Instanzen/Objekte speichern ?!?

Verfasst: Samstag 2. Januar 2010, 15:35
von supermoep
Hi,

ich fange gerade mit Phyton an und habe ein Problem. Ich programmiere ein Spiel bei dem sich eine beliebige Anzahl Spieler anschließen kann. Nun habe ich für die Spieler eine Klasse erstellt um so pro Spieler ein Objekt erzeugen zu können. Diese Objekte würde ich gerne für den Zugriff auf diese in einer Datenstruktur abspeichern um sie geordnet vorliegen zu haben.

Mir ist nur nicht klar ob das Möglich ist bzw. ob ich nicht vielleicht falsch vorgehe.

Würde mich über einen Tip freuen.

Grüße

Verfasst: Samstag 2. Januar 2010, 15:39
von martin101986
Hallo,

klar ist das möglich. Dafür könntest du Listen oder Dictionaries verwenden.

Grüße Martin

Verfasst: Samstag 2. Januar 2010, 16:20
von burli
Ich würde ein Dictionary nehmen und da als "Key" z.B. den Namen des Spielers (ich gehe mal davon aus, dass die einzigartig sind). Als "Value" speicherst du das Objekt. Das hat den Vorteil, dass man relativ einfach einen Spieler anhand eines eindeutigen Merkmals finden kann ohne lange suchen zu müssen

Verfasst: Samstag 2. Januar 2010, 17:57
von supermoep
Danke für die Antworten.

Mir ist noch nicht ganz klar wie ich dann aus so einer Liste auf die Methoden der Klasse zugreifen kann.

Verfasst: Samstag 2. Januar 2010, 18:09
von cofi
Gar nicht.
Die Liste/das Dictionary hat nichts mit der Klasse/den Exemplaren zu tun, sondern speichert lediglich beliebige Objekte. Holst du die Objekte allerdings aus der Liste/dem Dictionary kannst du sie ganz normal benutzen.

Verfasst: Samstag 2. Januar 2010, 18:11
von Defnull
Wo ist denn das Problem?

Code: Alles auswählen

player = dict()
player['alice'] = Player(name='alice')
player['bob'] = Player(name='bob')

player['bob'].win()
alice = player['alice']
alice.loose()

Verfasst: Samstag 2. Januar 2010, 18:12
von martin101986
So z.B.

Code: Alles auswählen

class Player(object):
     def __init__(self, name):
         self.name = name

players = []
players.append(Player("Peter"))
players.append(Player("Thomas"))
for player in players:
    print player.name

#Ausgabe
Peter
Thomas

Verfasst: Samstag 2. Januar 2010, 18:34
von burli
Aus den beiden Beispielen sieht man schön den Vorteil von Dictionaries (erstes Beispiel). Man kann mittels des Namen auf das Objekt zugreifen