
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