Instanzen/Objekte speichern ?!?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
supermoep
User
Beiträge: 4
Registriert: Samstag 2. Januar 2010, 15:29

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
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

Hallo,

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

Grüße Martin
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

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
supermoep
User
Beiträge: 4
Registriert: Samstag 2. Januar 2010, 15:29

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

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()
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
martin101986
User
Beiträge: 85
Registriert: Montag 3. Dezember 2007, 19:15
Wohnort: Steiermark, Österreich

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
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Aus den beiden Beispielen sieht man schön den Vorteil von Dictionaries (erstes Beispiel). Man kann mittels des Namen auf das Objekt zugreifen
Antworten