具有__iter__()的自定义对象未按__tuple__()中定义的返回?
具有__iter__()的自定义对象未按__tuple__()中定义的返回?
这个问题在这里已经有了答案:
在一个定义了__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日