Seite 1 von 1

ArrayList für Objekt mit mehreren Werten

Verfasst: Sonntag 15. März 2020, 01:47
von invisible
Hallo,

ich möchte eine ArrayList für ein Objekt der Klasse Rechteck erstellen, in der ich neue Rechtecke mit anderen Längen und Breitenwerte hinzufüge um diese dann zu erstellen, so dass mir nach dem Compilervorgang, alle Rechtecke über eine print-Methode aufgelistet werden. Könnte mir jemand helfen? Aktueller Code siehe unten. LG

Code: Alles auswählen

class Rechteck:
    def __init__(self,laenge,breite):
        self.laenge = laenge
        self.breite = breite

    print('Rechteck erstellt!')


    def print_rechteck(self):
        print('Die Rechtecklänge beträgt: '+ str(self.laenge)+ ' und die Rechteckbreite beträgt: ' +str(self.breite))


rechteck = Rechteck(20,5)

rechteck.print_rechteck()

Re: ArrayList für Objekt mit mehreren Werten

Verfasst: Sonntag 15. März 2020, 03:00
von invisible
ok also in etwa hab ich es schon geschafft! Jetzt wird mir die Länge des Rechtecks, welches an Position xyz in der Liste gespeichert wurde, ausgegeben. Jetzt möchte ich gerne, dass mir. 1. zusätzlich auch die Breite mit ausgegeben wird und zudem einmal eine komplette Auflistung aller gespeicherten Rechtecke.


Code siehe wie folgt:

Code: Alles auswählen

class Rechteck(object):
    def __init__(self, laenge=None, breite=None):
        self.laenge = laenge
        self.breite = breite

    print('Rechteck erstellt!')
    
rechteckList = []
rechteckList.append(Rechteck(20,5))
rechteckList.append(Rechteck(40,5))

print (rechteckList[1].laenge)

Re: ArrayList für Objekt mit mehreren Werten

Verfasst: Sonntag 15. März 2020, 03:26
von invisible
ok länge und breite wird nun zusammen ausgegeben! Das hätten wir schonmal! Jetzt hätte ich gerne nur noch, dass alle Rechtecke gelistet mit einer print-Methode ausgegeben werden.

Code:

Code: Alles auswählen

class Rechteck(object):
    def __init__(self, laenge=None, breite=None):
        self.laenge = laenge
        self.breite = breite

    print('Rechteck erstellt!')


    def print_rechteck(self):
        print('Die Rechtecklänge beträgt: '+ str(self.laenge)+ ' und die Rechteckbreite beträgt: ' +str(self.breite))

rechteckList = []
rechteckList.append(Rechteck(20,5))
rechteckList.append(Rechteck(40,5))

print (f"Länge beträgt:  {rechteckList[1].laenge}  und Breite beträgt:  {rechteckList[1].breite}")


Re: ArrayList für Objekt mit mehreren Werten

Verfasst: Sonntag 15. März 2020, 08:13
von Sirius3
Das erste `print` sieht falsch eingerückt aus. Warum stückekst Du in print_rechteck Strings mit + zusammen, unten verwendest Du aber Formatstrings?
Variablennamen werden klein_mit_unterstrich geschrieben. Datentypen haben in Namen nichts zu suchen. rechteckList sollte besser rechtecke heißen. Zur Ausgabe aller Rechtecke brauchst Du eine for-Schleife.

Re: ArrayList für Objekt mit mehreren Werten

Verfasst: Sonntag 15. März 2020, 08:20
von sparrow
In der offiziellen Dokumentation gibt es ein ganz gutes Tutorial, das die Grundlagen von Python vermittelt. Unter anderem lernt man dort auch etwas über for-Schleifen.
Das Tutorial ist ein guter Startpunkt um sich entsprechendes Grundwissen anzueignen.

Re: ArrayList für Objekt mit mehreren Werten

Verfasst: Sonntag 15. März 2020, 08:45
von Sirius3
Was mir gerade noch aufgefallen ist: laenge und breite in Rechteck haben als default-Argument None. Ist es sinnvoll ein Rechteck ohne eine Länge zu haben? Nein, die beiden Argumente müssen Pflicht-Argumente sein.

Re: ArrayList für Objekt mit mehreren Werten

Verfasst: Sonntag 15. März 2020, 09:19
von ThomasL
Damit du mal eine Basis hast, auf der du aufbauen kannst.

Code: Alles auswählen

class Rechteck:
    
    def __init__(self, laenge, breite):
        self.laenge = laenge
        self.breite = breite

    def __str__(self):
        return f'Die Rechtecklänge beträgt: {self.laenge} und die Rechteckbreite beträgt: {self.breite}'

rechtecke = [Rechteck(laenge, breite) for laenge, breite in [(20, 5), (40, 5)]]

for rechteck in rechtecke:
    print(rechteck)

Code: Alles auswählen

Die Rechtecklänge beträgt: 20 und die Rechteckbreite beträgt: 5
Die Rechtecklänge beträgt: 40 und die Rechteckbreite beträgt: 5