Per the documentation for reversed(), a reversible object must either
reversed()
__reversed__
__len__
__getitem__
The latter is preferable, unless it's less efficient.