在定义了__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__()
返回它应该的内容。
提前致谢。
答案 0 :(得分:4)
__tuple__
不是一件好事。 tuple
并未查找__tuple__
方法来执行转换为元组。我不知道你有什么想法。