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 に答える