为什么Python中的元组使用反向,但没有反向?

为什么Python中的元组使用反向,但没有反向?,python,iterator,tuples,immutability,reverse,Python,Iterator,Tuples,Immutability,Reverse,在对的讨论中,我们意识到元组没有一个\uuuuuuuuuuuuuuu方法。我猜想创建迭代器需要对元组进行变异。然而,元组在反转时也能很好地发挥作用。为什么用于反向的方法不能同样适用于\uuuu反向 >>> foo = range(3) >>> foo [0, 1, 2] >>> list(foo.__reversed__()) [2, 1, 0] >>> foo [0, 1, 2] >>> bar = (0

在对的讨论中,我们意识到元组没有一个
\uuuuuuuuuuuuuuu
方法。我猜想创建迭代器需要对元组进行变异。然而,元组在
反转时也能很好地发挥作用。为什么用于
反向
的方法不能同样适用于
\uuuu反向

>>> foo = range(3)
>>> foo
[0, 1, 2]
>>> list(foo.__reversed__())
[2, 1, 0]
>>> foo
[0, 1, 2]
>>> bar = (0, 1, 2)
>>> list(bar.__reversed__())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute '__reversed__'
>>> reversed(bar)
<reversed object at 0x10603b310>
>>> tuple(reversed(bar))
(2, 1, 0)
>foo=范围(3)
>>>福
[0, 1, 2]
>>>列表(foo.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
[2, 1, 0]
>>>福
[0, 1, 2]
>>>条=(0,1,2)
>>>列表(条形图)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“tuple”对象没有属性“\uuuuuuuuuuuu”
>>>反向(巴)
>>>元组(反向(条形))
(2, 1, 0)
根据以下内容:

反向(seq)

返回一个反向迭代器。seq必须是具有 反向()方法或支持序列协议(从开始的整数参数为 0)。


编辑:好吧,我试着再说一遍(英语不是我的母语)-举个例子

有些函数-我称它们为
fun(object)
-可以使用
object.\uu func\uuu()
来完成任务,或者如果没有
对象,它们可以使用
对象中的其他函数。\uu func\uu()

-

例如
str()
-当您使用
str(object)
时,它会调用
对象。
,但如果没有
对象。
则它会调用
对象。

因此,您可以对没有
的对象使用
str()
,并且仍然可以得到一些结果

-


另一个例子
我真的不知道你想说什么。。。需要详细说明吗?关键是说,“支持序列协议的对象应该只提供_reversed _(),如果它们能够提供比reversed()提供的实现更高效的实现。”
class MyClass():

    def __str__(self):
        return "MyClass: __str__"

    def __repr__(self):
        return "MyClass: __repl__"

    #-------------------------

    def __lt__(self, other):
        return True

    def __gt__(self, other):
        return True

    #-------------------------

a = MyClass()
b = MyClass()

print( str(a) )

print( a < b )