理系母の趣味はプログラミング

理系院卒、メーカー技術職の二児の母が、PythonやVBAで色々と作ってアップしていくブログです。

【17日目】オブジェクト指向プログラミング①とりあえずやってみる

こんばんは、なぺです。

今回からPart2に入ります!
今日の内容は、プログラミングパラダイムについて。
プログラミングパラダイムとは、プログラミングのスタイル、手法のことらしいです。

手続き型プログラミング、関数型プログラミングオブジェクト指向プログラミングと3種類が本では紹介されています。
今まで学んできたやり方は、手続き型プログラミングだったようです。

しかし、もっとPythonを極めるには、オブジェクト指向プログラミングを学ぶ必要があるということなので、それについて記事にまとめようと思います。

オブジェクト指向プログラミング
そもそもオブジェクトってなに?
調べました。

オブジェクトとは、物、物体、目標物、対象、目的語、客体、などの意味を持つ英単語。

ほお。

本を読み進めます。

オブジェクト指向プログラミングでは、オブジェクトに状態を持たせます。


ふむふむ。
わかったようでわからないけれど、とりあえず読み進めます。

オブジェクト指向プログラミングでは、複数のクラスで相互に作用するオブジェクトの集合を定義します。クラスは表現したいオブジェクトを定義・分類するプログラミングの仕組みです。

ふむう。

すべてのオブジェクトはクラスのインスタンスです。

ふむ。

いや、まあね、クラスとかインスタンスとか、FEで勉強したから何となく知ってますよ。
私の場合、クラス:人間 インスタンス:なぺ みたいな感じでしょ?
でも「知る」と「腑に落ちる」は違うのね。
私のそれは「知る」だったのね。

こういうときは実際に手を動かすに限る。

人間クラスを定義してみます。

 class Human: #クラスを定義
	def __init__(self): #initメソッドを定義
		print("Created!")

Pythonの慣習として
・クラス名は大文字で始める
・__init__の第一引数にはselfを使う
があります。
__init__はインスタンス変数を定義する特別なメソッドです(init=initializeの略)
この__init__のように、二重のアンダースコアで囲まれたメソッドは、特殊メソッドといいます。

うーん。
すみません。難しいのでとりあえず覚えときます。
だんだんわかってくるかな…

次に、私のインスタンスを定義してみます。

class Human:
	def __init__(self,k,n):
		self.kuni=k
		self.name=n
		print("Created!")
  hito1 = Human("nihon","nape")
#出力結果↓
Created!

これで私なぺのインスタンスが生成されました。
プリントしてみると

print(hito1)
#出力結果↓
<__main__.Human object at 0x0000017292022948>

hito1オブジェクト自体を出力すると、hito1がHumanクラスのオブジェクトであることと、コンピュータのメモリ上の位置を返します。

インスタンス変数の値が知りたい場合、下記のようにします。

print(hito1.kuni)
#出力結果
nihon

また、オブジェクトは複数作ることもできて

class Human:
    def __init__(self,k,n):
        self.kuni = k
        self.name = n
        print("Created!")

hito1 = Human("nihon","nape")
hito2 = Human("USA", "Tom")
hito3 = Human("Kenya","mukamikamau")
#出力結果
Created!
Created!
Created!

オブジェクトを指定して出力できます。

print(hito2.name)
#出力結果
Tom

息切れしそう…
ここ、初心者のぶちあたる壁なんじゃないか?
少なくとも私はぶち当たりました…。TT

今日はここまで~

難しい~

それではまたTT