クラス-Setクラス-

今回はクラスについて学習。
クラスがどんなものかというとプログラムで使う部品の設計図というイメージらしい。
クラスを基にインスタンスオブジェクトという部品を作ってプログラムを組み立てていく
とのこと。

pythonには文字列型やリスト型のような組み込み型があるけど、クラスはこの型に相当するらしい。
そして組み込み型を基にオブジェクトを作るようにクラスを基にインスタンスオブジェクトを
作るということか。

それで組み込み型のオブジェクトに対してメソッドが使えるようにインスタンスオブジェクトに対しても
メソッドが使えるらしい。なんとなくイメージはできた。

まずはSetクラスについて学習。
どんなクラスかというと、集合という要素を重複することなく保つリスト
を扱うときに使うクラスとのこと。
Setクラスを扱うにはsetsモジュールをインポートしなきゃいけないとのこと。
前のイメージに当てはめるとSetクラスという設計図を基に、部品であるインスタンスオブジェクト
を作っていくということ。
リスト型のオブジェクトを基にSetクラスを使い集合を作って変数に代入してみると、

>>> from sets import Set
>>> s = Set([1,3,5,7])
>>> s
Set([1, 3, 5, 7])

setsモジュールからSetクラスをインポートして、関数の引数みたいにリストを当てはめて集合を作って
変数sに代入していると。
これで変数sにSetクラスのインスタンスオブジェクトを代入できたわけか。
組み込み型ではリテラルを使ってオブジェクトを定義するけど、クラスでは関数みたいに呼び出してオブジェクト
を作るわけか。
インステンスオブジェクトに対してもメソッドが使えるとのことだったので、Setクラスに定義されているメソッドを
試してみる。

>>> s.add(9)            #要素9を集合sに加える
>>> s
Set([1, 3, 9, 5, 7])
>>> s.add(9)       
>>> s
Set([1, 3, 9, 5, 7])   #重複する要素は追加されない
>>> s.remove(1)           #要素1を削除
>>> s
Set([3, 9, 5, 7])
>>> s.pop()        #要素を1つ取り出す
3
>>> s
Set([9, 5, 7])
>>> s.pop()
9
>>> s
Set([5, 7])        
>>> s.clear()             #要素をすべて削除
>>> s
Set([])

つづいて演算子を使って計算を試してみる。
組み込みオブジェクトの場合と同様にオブジェクトの型が合ってないとダメみたい。

>>> s = Set([2,4,6,8])
>>> s2 = Set([4,8])
>>> s3 = s - s2
>>> s3
Set([2, 6])
>>> s4 = Set([1,3,5])
>>> s5 = s3 | s4
>>> s5
Set([1, 2, 3, 5, 6])

加算は + 演算子を使わないみたい。
forループでも使えるみたい。

>>> for i in s5:
...     print i
...
1
2
3
5
6