Seite 1 von 1

Struktur in python

Verfasst: Donnerstag 8. April 2004, 18:08
von Gucki
Ich eill mit einer datenstruktur arbeiten.
In C/C++ hab ich da so gemacht:

Code: Alles auswählen

struct t_daten
{
    int nr;
    float preis;
    string name;
}
...
t_daten data;
data[id].nr = 6;
data[id].preis = 34;
data[id].name = "Fritz";
...
nun hab ich das in python ungefähr so gelöst:

Code: Alles auswählen


data[id]={} 
	    data[id]['nr']= 6
	    data[id]['preis']= 34
	    data[id]['name']= 'Fritz'
print daten[x]['nr']
.....
Ich finde das irgendwie umständlich und ich glaube nicht das die lösung des problems umbedigt richtig ist, zwar funktioniert es aber so eine liste in einer list ist schon irgendwie verwirrend.

Gibts in python die möglichkeit selber datentypen zu definieren, bzw. ist vielleicht meine lösung doch richtig?

Verfasst: Donnerstag 8. April 2004, 19:01
von Milan
Hi. Also zunächst einmal etwas grundlegendes: in Python gibt es keine festen Datentypen, also kann man keine definieren. Zwar gibt es Grundtypen wie Integer, Strings, ... aber du kannst keine neuen Typen definieren, wobei hier das Wort Typ wichtig ist. Denn es ist sehrwohl möglich Klassen zu bauen, die sich durch überladen von Methoden wie Typen verhalten, bzw einfach nur als Container dienen.

Wenn du also keine Dictionarys in einer Liste willst, dann mach dir eine eigene Kontainerklasse. Hier ein Beispiel:

Code: Alles auswählen

class t_daten:
    def __init__(self,nr=0,preis=0.0,name=""):
        self.nr=nr
        self.preis=preis
        self.name=name

...
#ich nehm mal an, data soll eine liste/dict sein und id eine nummer...
data[id]=t_daten(6,34,"Fritz)
...
print data[id].preis
Zu dem überladen von Methoden ist zu sagen, dass du so komplett neue "Typen" schaffen kannst, die sich nach deinen Vorstellungen verhalten. Siehe hierzu vielleicht mein Beispiel einer Klasse für Brüche.

Milan

Verfasst: Donnerstag 8. April 2004, 19:15
von Gucki
:D
Danke es klapt und schon wieder ein grosses stück python verstanden.

Verfasst: Freitag 9. April 2004, 11:50
von fs111
Das Klassenkonzept sollte doch aber eigentlich als C++ Programmierer nicht sonderlich neu sein, oder?

fs111

Verfasst: Freitag 9. April 2004, 22:38
von oenone
aber bei C++ ist es nicht so zwingend und somit kann man dabei schnell in eine art C mit ein wenig OOP verfallen...

auf bald
oenone