Ping> x is sequence-like if it provides __getitem__() but not keys() So why does this barf? >>> [].__getitem__ Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: __getitem__ (Obviously, lists *do* understand __getitem__ at some level. Why isn't it exposed in the method table?) Skip