Python リストを合成したクラス

#関数とメソッドの違いってなに?より
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#
# 対話モード >>> に
# コピペで実行できます。
#
class Container:
    def __init__(self, *args):
        self._values = args
     
    def __getitem__(self, index):
        return self._values[index]
     
    def __iter__(self):
        return iter(self._values)
     
    def __len__(self):
        return len(self._values)
 
container = Container(0, 1, 2)
 
 
# 1) 直接、添字表記で参照できる。
container[0]
container[1]
container[2]
 
# 2) 直接、for 文で回せる。
for element in container:
    element
 
# 3) 直接、len 関数でオブジェクトの長さを取得できる。
len(container)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> # 1) 直接、添字表記で参照できる。
... container[0]
0
>>> container[1]
1
>>> container[2]
2
>>>
>>> # 2) 直接、for 文で回せる。
... for element in container:
...     element
...
0
1
2
>>> # 3) 直接、len 関数でオブジェクトの長さを取得できる。
... len(container)
3
>>>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Container(tuple):
    def __new__(cls, *args):
        return super().__new__(cls, args)
 
container = Container(0, 1, 2)
 
 
# 1) 直接、添字表記で参照できる。
container[0]
container[1]
container[2]
 
# 2) 直接、for 文で回せる。
for element in container:
    element
 
# 3) 直接、len 関数でオブジェクトの長さを取得できる。
len(container)

コメント

このブログの人気の投稿

Python OpenCVとWebカメラでバーコードリーダー

VB.net Dictionaryクラスの初期化