非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

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]

スポンサーリンク

 - Python