今日も会議で、あくびをひとつ

ビジネスに役立つ情報を、下世話と小バカで煮染めてご提供。

【本まとめ】 Pythonのクラスをマジックミラー号で解説 「プログラミング超初心者が初心者になるためのPython入門(3) 関数・クラス編」

春眠亭あくびです。

※1回目 2018/03/06

※2回目 2018/03/07

※3回目 2018/03/19

→読み直し終了。

 

今日はプログラミング言語Pythonのお勉強。

Pythonの特徴は、とにかくシンプルで、書きやすく読みやすいこと。

この僕がPythonのスパゲティーコードを書けるくらいだからよっぽとです。

 

 

 

この本は表や図がないのにめちゃくちゃわかりやすかったです。

プログラミングが一切身につかないって人はこの本の一巻からやるのをおすすめします。

 

で、ずっと「クラス」ってやつがよくわからなくて、実際クラスをつかわなくてもコードはかけるので無視してたんですけど、人の書いたコード見ると大抵「クラス」を使ってて、読み解くのに苦労するから勉強することにしました。

 

クラスはジューススタンド

よく、「クラスはたい焼きだ!」って説明してる解説本多いけど、あれはちがう。

ジューススタンドが正解ですね。

クラスはジューススタンドの設計図で、そこから各駅のホームにジューススタンドをつくる。

店舗設計図をクラス、実際に作られたジューススタンドをインスタンスと言います。

クラスには2つの機能があります。

 

1つはモジュール機能。

class.hogehoge() のようにかっこが付きます。

こいつはかっこに入れた値とかを加工したり計算したりします。

ジューススタンドにおける、ミキサー。ミキサー(モジュール)にりんごとか入れて(引数)ジュースつくるイメージです。

ちなみにモジュールと同じようなもので、関数ってのがあります。

hogehoge() のようなもの。こちらはドットがない。ドットで何かに接続しないモジュールって感じ。

ジューススタンドで言うと、モジュールはジューススタンドのミキサー。

関数は単なるミキサー。

何が違うのというけれど、モジュールの場合、ジューススタンドに行けば必ずミキサーがあるってことが大事で、いちいちミキサー買ってこなくていいわけ。

ジューススタンド作るときはミキサーがついているので(モジュール)それを使えばいい。

それ以外の店を作るときにミキサーが必要なら、買ってこなければいけない(関数)。

こんな感じらしい。

 

脱線しましたが、クラスの続き。

2つ目は、属性機能。

hogehoge.fugafuga のように、かっこをつけない。

これは、データの保管場所って感じ。

ジューススタンドだと、作ったジュースを保管してる各ミキサーのイメージです。

 

 

さて、抽象論ばかり書いても仕方ないので、具体例を。

 

マジックミラー号のクラスを作ってみましょう。

 

class Magicmirror ( ) :

  def jyoshidaisei_name( self , who ) :

     self.name = who

 

簡単ですね。

男女の友情は成立するのか、女子大生シリーズ編のクラスです。

最初にMagicmirror ( )というクラスを定義。

クラスは必ず大文字で始めるのが慣例。

次に、jyoshidaisei_name()というモジュールを定義。selfはクラスにより生成されたインスタンス自身のことをさす。

最後にself.nameで、インスタンスのname属性に先程のwhoという引数、かっこに入れた値を格納します。

 

ではこのクラスを使ってみます。

 

person1 =  Magicmirror ( )

person1.jyoshidaisei_name( ‘sayaka_21sai’ )

print  person1.name

 

最初に、先程のMagicmirror ( )クラスから、person1というインスタンスをつくることを宣言。

次にperson1インスタンスでjyoshidaisei_name()モジュールを起動させる。

クラスだけでは機能しないので、必ずインスタンス化させることを忘れずに。

この時、引数でsayaka_21saiを入れる。これで、name属性という保管庫に、sayaka_21saiが保管される。

最後にprint関数を使ってname属性に保管された引数を取り出す。

 

出力はこんな感じ。

 

sayaka_21sai

 

ちなみに、今回jyoshidaisei_name()というモジュールを定義したけど、このモジュール名を「__init__」というモジュール名にすると、クラス名をそのままモジュールとしてそのまま使えたりするので便利!

これをコンストラクトという。こっちの方がよく使われるみたい。

 

class Magicmirror ( ) :
   def __init__( self , who )

      self.name = who

 

person1 = Magicmirror (‘sayaka_21sai’ )
print person1.name

 

1行だけど、短縮できました。

 

ということで

長年の疑問がついに明らかになって嬉しい。

あとマジックミラー号シリーズは女子大生編が一番好きです。