[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