他カテゴリ

class(クラス)って何?~Pythonでプログラミング

nonstop-iida's icon'
  • nonstop-iida
  • 2020/02/03 05:11

 

どうもノンストップ飯田です。

自己紹介をアップしたきり、放置していましたが、ちょっとこちらにもプログラミングの記事なんぞを書いていこうかなと思っておりまむす。

あまり、順序性は考えずにポツポツ上げていこうと思います。

今日は、実際にコードを書いて何かを作ろうと思った時に、知っておくと超便利なクラスについて書きます。

Content image

 

1.classとは?

 classって何でしょうか?僕自身も非エンジニアで独学でPythonを学び初め、classについて学びましたが、はっきり言ってまるで理解不能でした。

 

でも、ある程度理解が進んだ今、classは無理やり覚えるものではなく、知っておいた方が便利というものだ理解しました。

例えば、RPGをプログラミングで作ろうと思った場合を想像して下さい。

パーティーには自分も含め、3人程度の仲間と、戦う相手として異なる種類のモンスターたちが登場することでしょう。

 

2.パーティーを作ってみる

例えば、勇者・戦士・僧侶・魔法使いのオーソドックスな編成だったとします。

プレイヤーが側のステータス(データ項目)は、『名前』・『職業』・『HP』・『MP』・『攻撃力』・『防御力』・『精神』・『魔力』だったとします。

classなしに書くと・・・こんな感じになります。

Content image
4人分のステータスをベタ書き

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

まあ、なんというか・・・長いですね。

仮にルイー〇の酒場に武闘家や盗賊など、普段は連れていない仲間もいるとすると後、何人分このコードを書かなくてはいけないでしょうか・・・。

また、作成したプレイヤーを呼び出す場合、、、

Content image
呼び出す場合、各変数を呼び出す必要あり・・・。

かつ、例えばモンスターの先頭で'アリム'の攻撃力をプログラムで使う場合は、「player4_attack」を都度呼び出す必要があります。

もちろんこんな感じで一応出力はされます。

Content image
各変数を出力のたびに記載する必要あり。

つまり、面倒くさいのです。何かと。

これがclassを使った場合、、、こうなります。

Content image
右側切れててごめんなさい・・・

こんな感じで、Playerというclassを初めに定義し、インスタンス変数として『名前』等のステータスを引数として取れるようにします。

このclassを使って、勇者と戦士を作ってみましょう。

Content image
勇者を作成する
Content image
戦士を作成する

それぞれ上記の一行で済んでしまいます!

これなら、バンバン酒場で仲間を増やされても、楽チンですね!!

こうして作成したプレイヤー達を「オブジェクト」といいます。

各ステータスを属性として保持する、実態化したプレイヤーなのです。

なので、例えば、こうやって各属性が取り出し可能です。

Content image
名前を取り出す

 

 

 

Content image
名前が属性として出力される

 

 

 

更に、classには関数を定義することもできます。

例えば、全属性を出力するplayer_info関数を以下のように書いてみます。

Content image
Playerクラスにplayer_info関数を追記する

勇者と戦士を作成したオブジェクトに対し、上記関数を実行すると・・・

Content image
作成したオブジェクトで関数を実行

 

 

 

Content image
関数player_infoの実行結果

 

 

 

 

 

 

 

 

 

 

 

ばっちりですね!このようにclassを定義して、オブジェクトを作成するとオブジェクトに色んな属性や関数を持たせることができるため、とても効率的にプログラムが書けるのです。

3.つまりclassって何?

一番わかりやすい言い方は「設計図」だと思っています。progateでもそう説明されていました。

オブジェクトを量産するための、ベースとなる設計図があることで、オブジェクトの生産が効率的にできるということです。

別のサイトでもPython入門講座を書いていますので、良かったら遊びに来てくださいね!!

次回は、更にclassを活用できる「継承」等について書きたいと思います。

 

ちなみに、僕は自力で理解しようとしたので、classやオブジェクト指向の意義が理解できず、半年ほどプログラミングから逃亡する経験をしましたwww

この記事が、そんな僕みたいに挫折しかかっている誰かの足しになればと願ってます!読んでいただきありがとうございました。

 

 

 

Supporter profile iconSupporter profile iconSupporter profile iconSupporter profile icon Supporters link icon
Article tip 6人がサポートしています
獲得ALIS: Article like 55.40 ALIS Article tip 149.27 ALIS
nonstop-iida's icon'
  • nonstop-iida
  • @nonstop-iida
ノンストップ飯田と申します。会社員ですが、趣味でやってるPythonと歌うのが好きです。曲も書きます。twitter:@nonstop_iida

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
114.82 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
クリプト

スーパーコンピュータ「京」でマイニングしたら

Like token Tip token
1.06k ALIS
Eye catch
ビジネス

ブックオフで買ってきてアマゾンで売る仕事の1ヶ月の売り上げ公開

Like token Tip token
177.41 ALIS
Eye catch
グルメ

バターをつくってみた

Like token Tip token
124.75 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
120.79 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
他カテゴリ

オランダ人が語る大麻大国のオランダ

Like token Tip token
46.20 ALIS
Eye catch
他カテゴリ

SASUKEオーディションに出た時の話

Like token Tip token
35.87 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
他カテゴリ

テレビ番組で登録商標が「言えない」のか考察してみる

Like token Tip token
26.20 ALIS
Eye catch
ビジネス

海外企業と契約するフリーランス広報になった経緯をセルフインタビューで明かす!

Like token Tip token
16.10 ALIS