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
Liste ausgeben
-
- User
- Beiträge: 36
- Registriert: Dienstag 10. Januar 2006, 13:24
- Kontaktdaten:
Never touch a running system...
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Meinst Du sowas?
Gruß, mawe
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
-
- User
- Beiträge: 36
- Registriert: Dienstag 10. Januar 2006, 13:24
- Kontaktdaten:
Code: Alles auswählen
class Zeichnung:
def __init__(self):
self.m_figurListe = list()
def hinzufuegen_figur(self,figur):
self.m_figurListe.append( figur )
Never touch a running system...
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.
Bsp für einfach print:
Code: Alles auswählen
for name in self.m_figure:
print name
Code: Alles auswählen
self.m_figurListe = []
-
- User
- Beiträge: 36
- Registriert: Dienstag 10. Januar 2006, 13:24
- Kontaktdaten:
irgendwas mache ich falsch, er liefert mir nur die adresse! hab hier mal einen ausschnitt, vielleicht mache ich noch was anderes falsch!
dass ist eine klasse
und schließlich der aufruf:
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
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
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)
Never touch a running system...
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
@AlphaPhoenix: Und warum schreibst Du in der Klasse Kreis kein __repr__() wie ich's Dir gezeigt habe? Die wird nämlich beim print aufgerufen.
@Buell: Warum sollte l = [] ein Array ergeben? Bei mir ist das auch eine Liste. Und wie genau ist der Zugriff auf einzelne Elemente besser?
Code: Alles auswählen
def __repr__(self):
return "%s, %s, %s" % (self.m_xCenter, self.m_yCenter, self.m_radius)
-
- User
- Beiträge: 36
- Registriert: Dienstag 10. Januar 2006, 13:24
- Kontaktdaten:
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?
vielen danke für eure hilfe!
jetzt würd mich natürlich noch interessieren, was die __repr__(....
macht?
Never touch a running system...
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
AlphaPhoenix hat geschrieben: jetzt würd mich natürlich noch interessieren, was die __repr__(....
macht?
Wozu schreib ich mir hier eigentlich die Finger wund?mawe hat geschrieben: Die wird nämlich beim print aufgerufen
-
- User
- Beiträge: 36
- Registriert: Dienstag 10. Januar 2006, 13:24
- Kontaktdaten:
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!
Never touch a running system...
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
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
def __repr__(self):
return "lala"
Code: Alles auswählen
In [4]: class A:
...: def __repr__(self):
...: return "lala"
...:
In [5]: a = A()
In [6]: print a
lala
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.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 )
@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...?
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...?