Diez B. Roggisch schrieb:
Die Pruefung erfolgt dabei eben implizit, durch Anwendung seiner benoetigten Operationne - und genau das verstehe ich unter Duck-Typing.
Wie sagt man doch so schön? We're all adults.
Ich halte mich an folgende Regeln: 1.) Ich verwende type() wenn moeglich oder zwingend notwendig. 2.) Ich verwende isinstance() wenn type() nicht geht (wg. Ableitungen).
Was sicherlich so oft der Fall ist, dass type() ernsthaft Seltenheitscharakter verdient. Warum sollte ich mir meinen Code kaputt machen, nur, weil ich später irgendwann auf die Idee komme, dass ich eine Subklasse brauche, die irgendwas macht, was das Original nicht konnte? Ist für mich eigentlich Teil des Sinns und Zwecks von OO. Und das trifft insbesondere auf die Standardklassen zu: Mappings, Sequenzen, Iterables, Files, Zeichenfolgen, ...
3.) Duck-Typing kommt nur dann zur Anwendung, wenn ich vom Typ eines Objektes nicht auf seine implemetierte Schnittstelle schliessen kann, z. B. wenn die Schnittstelle eines Objektes zur Laufzeit erzeugt oder veraendert wird. 4.) Try-And-Error vermeide ich moeglichst immer.
Mit Ausnahme von 3 - da haben wir wohl etwas divergierende Vorstellungen -
Dem schließe ich mich an. Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de