Pythonの配列はオブジェクトも格納できる(ジェネリックスになる)
Pythonの配列は基本データ型だけでなく、なんとオブジェクトも格納できます。まるでジェネリックスのような役割を果たしてくれます。
[ad#top-1]
まずはオブジェクト指向(class)の基本
まずはPythonでのオブジェクト指向プログラミングの基本を抑えておきます。PythonでもJavaやC#のようなClassが使えます。
Classの基本形はこちらです。
#Classの基本形 class クラス名: def __init__(self, 引数1, 引数2, ...): #コンストラクタ def メソッド1(self, 引数1, 引数2, ...): #メソッド def メソッド1(self, 引数1, 引数2, ...): #メソッド
selfはJavaやC#でいうところの this
と同じ意味です。Pythonの特徴的なのはメソッドに必ず書くことです。
これを実例で書くと以下のようになります。インスタンス変数(self.name
, self.age
)をわざわざ宣言しなくて良いのも特徴的です。
class Person: def __init__(self, name, age): self.name = name self.age = age def getAge(self): print(self.age) def getName(self): print(self.name) member = Person("山田太朗", 33) print(member.getName()) #山田太朗と出力 print(member.getAge()) #33と出力
配列の基本
配列は以下のように書きます。
arr = [0, 1, 2, 3, 4] print(arr) # [0, 1, 2, 3, 4]と出力 print(arr[1]) # 1と出力 print(arr[2:]) # [2, 3, 4]と出力 print(arr[:3]) # [0, 1, 2]と出力 print(arr[:-1]) # [0, 1, 2, 3]と出力 print(len(arr)) # 5と出力 arr.append(5) #最後に新しい要素5を追加 print(arr) # [0, 1, 2, 3, 4, 5]と出力 arr2 = arr * 2 print(arr2) # [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]と出力 arr3 = ["A", "B", "C", "D", "E"] stg = ",".join(arr3) print(stg) #A,B,C,D,Eと出力 #int型は結合できないのでmapで要素すべてを文字列にする arr4 = map(str, arr) stg2 = ",".join(arr4) print(stg2) #0,1,2,3,4,5と出力
Pythonの配列で特徴的なのは、配列の要素数を拡張できる点です。
JavaやC#ではできませんね。その代わりLinkedList
のようなコレクションクラスが存在するわけですが、Pythonでは配列で実現できるので必要ないわけです。
結合する際はjoin
を使えばいいのですが、数値型は結合できないのでmap
で要素すべてを文字列にする必要があります。
配列にクラスを格納する
以上を踏まえて、配列にクラスが格納できるか試してみましょう。クラスは先程と同じものです。
class Person: def __init__(self, name, age): self.name = name self.age = age def getAge(self): print(self.age) def getName(self): print(self.name) #配列に格納 members = [Person("山田太朗", 33), Person("鈴木一郎", 54), Person("佐藤隆", 48)] for member in members: member.getName() member.getAge()
これを実行すると以下の通り、ちゃんと出力されました。
[ad#ad-1]
スポンサーリンク