import weakref class Foo: def __init__(self): self.data = [1,2,3,4] def __len__(self): return len(self.data) def __getitem__(self, index): return self.data[index] foo = Foo() reversed(foo) # ok reversed(weakref.proxy(foo)) # TypeError