[Python-de] auf Liste testen
Diez B. Roggisch
deets at web.de
Don Dez 15 17:13:09 CET 2005
On Thursday 15 December 2005 16:54, Jochen Schulz wrote:
> Diez B. Roggisch:
> > Jochen Schulz:
> > > <<< del C.f
> >
> > Naja, das ist ja auch etwas sehr boesartig.
>
> Keine Frage.
>
> Worauf ich hinauswollte: wenn ich mich konsequent um Interfaces kümmere,
> statt um Typen, gewinne ich viel (siehe file-like objects) und erschlage
> damit selbst solches Fehlverhalten.
Nein, nicht wirklich, das ist IMHO sehr akademisch betrachtet - und praktisch
kommen wir denke ich zum selben Ergebnis:
- in Python setzt man ein bestimmtes Protokoll/Verhalten vorraus. Entweder
implizit, durch Benutzung, oder explizit. Was man nur selten braucht, zb um
strings von iterables zu unterscheiden um nicht aus versehen ueber die
Buchstaben zu laufen.
- wenn explizit, dann ist type() oder isinstance() das Mittel der Wahl,
letzteres ist sicher leistungsfaehiger - auch wenn man das weniger
selbstgerecht als Andreas feststellen kann. Was IMHO fuer die Tiefe der
aktuellen Diskussion wesentlich einflussreicher ist als die Unterschiede im
Programmierstil der Beteiligten .... :)
Dein Ansatz wuere ja genau bedeuten das man einen quasi-statischen Ansatz
faehrt und _alle_ potentiellen Methoden abfragt - bei files zB read, write
aber auch readlines usw. Das macht ja niemand wirklich. Stattdessen wuerde
man in dem Fall eben
class MyFileUrsurper(file):
def read(self):
....
....
usw. machen und dann mittels
isinstance(foo, file)
darauf pruefen und sich darauf verlassen das dann schon alles da sein wird.
MfG Diez