Seite 1 von 1
Liste ausgeben
Verfasst: Donnerstag 2. Februar 2006, 09:52
von Alpha-Phonix
Hallo Forum!
ich suche eine Formatierung, die mir es ermöglicht eine Liste auszuegeben. Ich habe mehrere Klassenobjekte in dieser gespeichert, die alles individuelle Werte besitzen!
Wie kann ich die nun sinnvoll ausgeben?
wenn ich mit print liste, die liste ausgeben, dann gibt er mir die speicheradressen von allen listen, jedoch nicht die werte!
vielen dank

Verfasst: Donnerstag 2. Februar 2006, 10:08
von mawe
Hi!
Meinst Du sowas?
Code: Alles auswählen
In [23]: class A:
....: def __init__(self, x):
....: self.x = x
....: def __repr__(self):
....: return "x = %s" % self.x
....:
In [24]: a = A(1)
In [25]: b = A(2)
In [26]: c = A(3)
In [27]: l = [a,b,c]
In [28]: for i in l: print i
....:
x = 1
x = 2
x = 3
Gruß, mawe
Verfasst: Donnerstag 2. Februar 2006, 10:13
von Alpha-Phonix
Code: Alles auswählen
class Zeichnung:
def __init__(self):
self.m_figurListe = list()
def hinzufuegen_figur(self,figur):
self.m_figurListe.append( figur )
so in figur steht jetzt ein objekt mit verschiedenen werten! diese figur wird der liste m_figurListe zugefügt und diese möchte ich jetzt ausgeben! in dem objekt sind int und float werte gespeichert!
Verfasst: Donnerstag 2. Februar 2006, 10:45
von Buell
umm alle werte Auszugeben einfach eine for Schleife verwenden
Bsp für einfach print:
wie du siehst wird der Inhalt jeweils an die Variable name übergeben, damit kannst du dann innerhalb der Schleife nach belieben verfahren. Der Variablenname ist frei wählbar und muss keinen Bezug auf die Liste haben. Falls das nicht funktionieren sollte würde ich aus der Liste nen Array machen:
und dann wie oben weiter verfahren. Array bietet auch den Vorteil, dass du auf einzelne Elemente einfach zugreifen kannst.
Verfasst: Donnerstag 2. Februar 2006, 10:59
von Alpha-Phonix
irgendwas mache ich falsch, er liefert mir nur die adresse! hab hier mal einen ausschnitt, vielleicht mache ich noch was anderes falsch!
Code: Alles auswählen
class Zeichnung:
def __init__(self):
self.m_figurListe = list()
def hinzufuegen_figur(self,figur):
self.m_figurListe.append( figur )
for name in self.m_figurListe:
print name
dass ist eine klasse
Code: Alles auswählen
class Kreis(GeometrischeFigur):
def __init__( self, t_xCenter, t_yCenter, t_radius ):
self.m_xCenter = t_xCenter
self.m_yCenter = t_yCenter
self.m_radius = t_radius
def rechneSchnittlaenge(self):
schnittlaenge = (float(math.pi)) * float(self.m_radius) * 2
return schnittlaenge
def rechneFlaeche(self):
flaeche = (float(math.pi)) * float(self.m_radius) * float(self.m_radius)
return flaeche
und schließlich der aufruf:
Code: Alles auswählen
x_center=raw_input("X-Position: ")
y_center=raw_input("Y-Position: ")
radius=raw_input("Radius (cm): ")
kreis=Kreis(radius,x_center,y_center)
schnittlaenge_kreis=kreis.rechneSchnittlaenge()
flaeche_kreis=kreis.rechneFlaeche()
z1.hinzufuegen_figur(kreis)
Verfasst: Donnerstag 2. Februar 2006, 11:04
von mawe
@AlphaPhoenix: Und warum schreibst Du in der Klasse Kreis kein
__repr__() wie ich's Dir gezeigt habe? Die wird nämlich beim print aufgerufen.
Code: Alles auswählen
def __repr__(self):
return "%s, %s, %s" % (self.m_xCenter, self.m_yCenter, self.m_radius)
@Buell: Warum sollte
l = [] ein Array ergeben? Bei mir ist das auch eine Liste. Und wie genau ist der Zugriff auf einzelne Elemente besser?
Verfasst: Donnerstag 2. Februar 2006, 11:10
von Alpha-Phonix
ok sorry, ich glaub ich kriegs jetzt hin, wenn net melde ich mich nochmal!
vielen danke für eure hilfe!
jetzt würd mich natürlich noch interessieren, was die __repr__(....
macht?
Verfasst: Donnerstag 2. Februar 2006, 11:15
von mawe
AlphaPhoenix hat geschrieben:
jetzt würd mich natürlich noch interessieren, was die __repr__(....
macht?
mawe hat geschrieben:
Die wird nämlich beim print aufgerufen
Wozu schreib ich mir hier eigentlich die Finger wund?

Verfasst: Donnerstag 2. Februar 2006, 11:19
von Alpha-Phonix
ja nun das ist ja klar, das hast ja schon geschrieben. aber was macht die fkt genau, dass sie beim print aufgerufen wird, weiß ich ja jetzt!
Verfasst: Donnerstag 2. Februar 2006, 11:27
von mawe
Ich versteh Deine Frage nicht ganz. Sie mach das was eine brave Funktion nun mal macht, nämlich das was Du ihr sagst was sie tun soll
Hier gibt sie den String "lala" zurück.
Code: Alles auswählen
In [4]: class A:
...: def __repr__(self):
...: return "lala"
...:
In [5]: a = A()
In [6]: print a
lala
Verfasst: Donnerstag 2. Februar 2006, 22:42
von BlackJack
Alpha-Phonix hat geschrieben:Code: Alles auswählen
class Zeichnung:
def __init__(self):
self.m_figurListe = list()
def hinzufuegen_figur(self,figur):
self.m_figurListe.append( figur )
Kleine Anmerkung zur Namensgebung: Die (IMHO) Unart ein `m_` vor Variablennamen zu schreiben um sie als `Member`-Variablen zu kennzeichnen und sie von lokalen Namen unterscheiden zu können ist zwar in C++ weit verbreitet, in Python aber total unnötig. In Python
muss vor `Member`-Variablen ein `self.` stehen. Das sollte deutlich genug sein.

Verfasst: Freitag 3. Februar 2006, 09:46
von Buell
@mawe
ja hast recht, komme etwas durcheinander, da ich momentan in 4 Sprachen gleichzeitig progge, in der Python Welt ist das natürlich auch eine Liste, die du aber theoretisch behandelst wie ein array, hab grad keine Lust das zu testen, aber müsste doch theoretisch auch mit sowieso[5] gehen, oder?
PS: würde nicht einfach str() das gleiche tun...?