使用__iter __()的自定义对象不返回__tuple __()中定义的内容?

时间:2017-10-19 19:27:09

标签: python python-3.x object methods

在定义了__iter__()的自定义对象中,调用tuple(obj)时,它会以元组形式返回__iter__()的数据,但我希望它从{{1}返回}}

这是一个非常大的课程,我不想在这里粘贴它。我改为写了一个较小的问题例子。

__tuple__()

如果您需要查看我的所有代码,请询问,我会将其放入Pastebin中。我只想为您节省分类所有这些额外方法的工作。

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"]. 是否会覆盖__iter__()类型?出于某种原因,我不能让它改变以从__tuple__()返回它应该的内容。

提前致谢。

1 个答案:

答案 0 :(得分:4)

__tuple__不是一件好事。 tuple并未查找__tuple__方法来执行转换为元组。我不知道你有什么想法。