0

我写了一个矢量类,我希望能够写出类似的东西

x = Vector([1,2,3])
for i in x:
    #do stuff

有没有像 __ add __ 这样的特殊方法可以定义来做这样的事情?

4

1 回答 1

2

您要定义__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]
>>> 

等等。

于 2012-09-14T16:51:00.563 回答