我想知道,有没有一种方法可以通过以下方式将类实例转换为元组: 假设我们有一个带有字段x和y的A类,我们有一个包含A个实例的列表l。如果可能的话,我想做以下事情:
for (x, y) in l:
print x + y #just an example
我正在考虑使用__iter__
来返回x和y,但它并没有起作用。转换为元组工作正常,但它无法在for循环中将对象放入l到(x,y)中
我知道这听起来有些愚蠢,但是一位朋友正在挑战我正在做的事情,即使看起来可行,我也无法做到这一点
答案 0 :(得分:4)
嗯,你可以用__iter__
:
def __iter__(self):
yield self.x
yield self.y
但我不推荐它。
如果您确定要将此内容视为元组,则可以使用namedtuple
类:
import collections
XAndYClass = collections.namedtuple('XAndYClass', 'x y')
xandy = XAndYClass(1, 2)
print xandy.x # prints 1
x, y = xandy # x = 1, y = 2
如果需要,您可以从中继承添加方法。
class XAndYWithMethods(XAndYClass):
def method(self):
print 'doing stuff...'