[Python-de] Array als Tabelle (mit Zeilen und Spalten)?

Stefan Schwarzer sschwarzer at sschwarzer.net
So Nov 25 12:25:51 CET 2012


Hallo Achim,

On 2012-11-25 10:44, Achim Herwig wrote:
> Am Sonntag, 25. November 2012, 10:37:38 schrieb Stefan Schwarzer:
>> Statt der Tupel oder Listen würde ich hier eine Klasse für
>> die Eigenschaften benutzen:
> 
> oder collections.namedtuple? 
> http://docs.python.org/2/library/collections.html#collections.namedtuple
> 
> Hat da jemand Praxiserfahrung mit, lohnt sich der Einsatz?

ich habe bisher `namedtuple` sehr selten genutzt.

Ich finde es nicht sinnvoll, Objekten "mal eben nebenbei"
eine Tupel-Schnittstelle zu verpassen, nur weil es sich
einfach hinschreiben lässt (vgl. [1]).

Im konkreten Beispiel der chemischen Elemente fände ich es
überhaupt nicht intuitiv, auf Attribute über Indizes
zuzugreifen wie in

print iron[0]  # -> Fe
print iron[1]  # -> 55.85

und würde diese Schnittstelle daher auch nicht anbieten.

`namedtuple` bietet sich meiner Meinung nach eher bei
Objekten an, die schon im "normalen Leben" üblicherweise
als Tupel dargestellt werden, zum Beispiel 2D- oder
3D-Koordinaten.

Was ich nett fände, wäre eine Collection-Klasse in der
Standardbibliothek, die einfache Klassen ohne Methoden
ermöglicht, aber ohne die Indizierungsmöglichkeiten von
`namedtuple` hinzuzufügen. (Ja, ich weiß, dass eine solche
Klasse relativ einfach selbst zu schreiben ist.) Ich denke,
das wäre in vielen Situationen sinnvoller, wo jetzt mancher
der Bequemlichkeit halber `namedtuple` verwendet, weil es
die Python-Standardbibliothek anbietet.

[1] http://mail.python.org/pipermail/python-de/2011q2/001547.html

Viele Grüße
Stefan


Mehr Informationen über die Mailingliste python-de