abcd wrote:
> good point. is there place that documents what methods/attrs I should
> check for on an object? for example, if its a list that I expect I
> should verify the object that is passed in has a ??? function? etc.
Don't check, try. Catch a possible exception, and continue with another type
assumption. The only thing one often checks is for basestring, as
basestring supports iteration, but more than often isn't supposed to be
iterated over.
Small example to gather all strings out of a tree of objects (untested):
def foo(arg):
# string case
if isinstance(arg, basestring):
return [arg]
# dict-like
try:
res = []
for value in arg.itervalues():
res.extend(foo(value))
return res
except AttributeError:
pass
# generally iterables
res = []
for value in arg:
res.extend(foo(value))
return res
Diez
--
http://mail.python.org/mailman/listinfo/python-list