Struktur in python

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.
Gucki
User
Beiträge: 2
Registriert: Mittwoch 7. April 2004, 23:37

Struktur in python

Beitragvon Gucki » Donnerstag 8. April 2004, 18:08

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?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Donnerstag 8. April 2004, 19:01

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
Gucki
User
Beiträge: 2
Registriert: Mittwoch 7. April 2004, 23:37

Beitragvon Gucki » Donnerstag 8. April 2004, 19:15

:D
Danke es klapt und schon wieder ein grosses stück python verstanden.
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Freitag 9. April 2004, 11:50

Das Klassenkonzept sollte doch aber eigentlich als C++ Programmierer nicht sonderlich neu sein, oder?

fs111
Benutzeravatar
oenone
User
Beiträge: 75
Registriert: Mittwoch 27. August 2003, 14:39
Wohnort: 49°17'28N, 8°15'57E
Kontaktdaten:

Beitragvon oenone » Freitag 9. April 2004, 22:38

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
if you don't remember something, it never happened.
if you aren't remembered, you never existed.
i don't quite understand what love is like... but if there was someone who liked me, i'd be happy.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]