具有__iter__()的自定义对象未按__tuple__()中定义的返回?

14 浏览
0 Comments

具有__iter__()的自定义对象未按__tuple__()中定义的返回?

这个问题在这里已经有了答案:

如何在Python中将自定义类对象转换为元组?[已关闭]

在一个定义了__iter__()的自定义对象中,当调用tuple(obj)时,它返回__iter__()中的数据以元组形式返回,但是我想从__tuple__()返回。

这是一个非常大的类,我不想在这里粘贴它。我写了一个更小的例子来说明我的问题。

class Example:
    def __init__(self, a, b):
        self.data = [a, b]
    def __iter__(self):
        return iter(reversed(self.data))
    def __tuple__(self):
        return map(str, self.data)
ex = Example(2, 3)
print([x for x in ex])  # Should return the data from __iter__().
>>> [3, 2]  # Reversed, good...
print(tuple(ex))  # Now calling: __tuple__().
>>> (3, 2)  # Should have returned ["2", "3"].

如果你需要看到我的所有代码,请问我,并把它放在Pastebin上。我只是想省去你们找到所有这些额外方法的麻烦。

是否__iter__()覆盖了__tuple__()类型?由于某些原因,我无法从__tuple__()中获取它应该返回的结果。

提前谢谢。

admin 更改状态以发布 2023年5月22日
0
0 Comments

__tuple__ 不是一个存在的东西,tuple 不会去寻找 __tuple__ 方法来进行转换成元组。我不知道你从哪里得到这个想法。

0