Похоже, что атрибут __reversed__ списков в Jython не реализован.Я не получаю результаты, которые вы описываете, если я звоню
getattr([], '__reversed__')
в Python 2.5.2, я получаю
>>> [].__reversed__
<built-in method __reversed__ of list object at 0x7f72581d7050>
И в Jython 2.5.1 я получаю
>>> [].__reversed__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute '__reversed__'
Если он возвращает True
или False
соответственно, то, вероятно, вы не используете стандартный список Python.
В любом случае, похоже, что Jython не поддерживаетатрибут __reversed__ списков, указывающий, что он обратим.Согласно документации эта функция, кажется, была добавлена к реализации CPython в Python 2.6, что может объяснить, почему она не появилась в Jython 2.5.1.Я нахожу, что __reversed__ появляется в Python 2.5.2, поэтому он может быть перенесен обратно в CPython, но просто официально не поддерживается.
На данный момент, вы можете предложить, чтобы cmd2 был исправлен примерно следующим:
def can_be_reversed(o):
"return True if an object can be reversed by reverse()"
return hasattr(o, '__reversed__') or \
hasattr(o, '__len__') and hasattr(o, '__getitem__')