我写了一个矢量类,我希望能够写出类似的东西
x = Vector([1,2,3])
for i in x:
#do stuff
有没有像 __ add __ 这样的特殊方法可以定义来做这样的事情?
我写了一个矢量类,我希望能够写出类似的东西
x = Vector([1,2,3])
for i in x:
#do stuff
有没有像 __ add __ 这样的特殊方法可以定义来做这样的事情?
您要定义__iter__
:
>>> class Vector(object):
... def __init__(self, vec):
... self.data = vec[:]
... def __iter__(self):
... for i in self.data:
... yield i
...
>>> x = Vector([1,2,3])
>>> x
<__main__.Vector object at 0xb728210c>
>>> for i in x:
... print i
...
1
2
3
或者在这种情况下,你可以逃脱
>>> class Vector(object):
... def __init__(self, vec):
... self.data = vec[:]
... def __iter__(self):
... return iter(self.data)
...
>>> Vector([1,2,3])
<__main__.Vector object at 0x914722c>
>>> list(Vector([1,2,3]))
[1, 2, 3]
>>>
等等。