
登山でいえば、スタートする前に荷物のチェックや基本的な登り方を学んでいるようなイメージですかね。
(まだ登ってなかったの!?って思った方は登り始めてるイメージでも大丈夫です(゚ρ゚)ノ)
それでは張り切ってクラスを学んでいきましょう!
そもそもクラスとインスタンスとは
結論、クラスとは設計図のイメージでインスタンスは設計図にあてはまる一部のものだと考えるとわかりやすいかと思います!
たとえば、あなたがケーキ屋さんで、メニューを作るときのイメージをしてみて下さい。
メニューと書いてある真っ白なボードにショートケーキ、チョコレートケーキなどのケーキの名前と
250円、300円と値段を書くと思います。
この真っ白なメニュー(何を載せるかだけ決めた)がクラスでケーキ名や値段がそれぞれインスタンスとなります。
ちなみに英語のクラスは種類や部類(共通する)、インスタンスは実体という意味です。
まさにそのまんまの意味なんですね(o´・∀・`o)
まずはクラスを用意してみよう
それでは実際にやってみましょう!
まずはクラスを作っていきますよ。
class Cakemenu:
クラスの書き方ですが、まずはclassと書き空白を入れて
クラス名を入れます。クラス名の最初の文字は大文字にするので忘れやすい部分ですね!
それと文末に:を入れればOKです♪
まだ何も中身がないので改行しインデントを入れてpassと入れれば何もやることがないよ♪って指示ができますのでとりあえず入れておきましょう。
class Cakemenu:
pass
クラスをもとにインスタンスを用意してみよう
これで全体の設計図ができました♪実際に設計図をもとに土台を作ってみましょう。
class Cakemenu:
pass
strawberry_cake = Cakemenu()
設計図をもとに作りたい土台 = 土台のもとにした設計図()というイメージです。
これがインスタンスでまだ空っぽですが土台strawberry_cakeにこれから作っていくよ♪っていう指示だと思うと簡単ですね。
インスタンスに情報を入れていこう
ここからは空っぽのインスタンスに情報を入れていきます!空っぽの状態なので必要なものを盛り付けていくイメージでも良いですねヾ(o´▽`)ノ゙
とりあえず、ケーキの名前は入れておきたいですねー。
実際にやってみましょう!
class Cakemenu:
pass
strawberry_cake = Cakemenu()
strawberry_cake.name = “苺のケーキ”
さきほどのインスタンスに.nameがついてますね♪
イメージとしてはstrawberry_cakeのnameは苺ケーキだよ♪って指示してる感じです。
ちなみにこの.の後のnameの部分ですがインスタンス変数といいます!
ここまできて変数って何って人もいるかもしれませんね!
もしわからないって方がいたら合わせて変数について解説してある記事を見てみて下さい♪
ちなみにこの苺のケーキを表示したいときですがprintを使って簡単に表示できます。
class Cakemenu:
pass
strawberry_cake = Cakemenu()
strawberry_cake.name = “苺のケーキ”
print(strawberry_cake.name)
実行:苺のケーキ
こんな風にインスタンス.インスタンス変数名を入れればいいだけなので簡単です♪
さて、ちょっと1つだけだと寂しいのでもう少し増やしてみますよ!
class Cakemenu:
pass
strawberry_cake = Cakemenu()
strawberry_cake.name = “苺のケーキ”
strawberry_cake.price = 250
chocolate_cake = Cakemenu()
chocolate_cake.name = “チョコレートケーキ”
chocolate_cake.price = 300
こんな感じでどんどん増やすことができます!これがクラスとインスタンスの作り方と使い方です♪
ちょっと最初は慣れませんが何回か使ってくと慣れていきます!実際にこれだけ見ると難しくはないですよねヾ(*´ω`)ノ゙
ここまで覚えて一休み、次はクラスのメソッドについて学んでいきます!
クラスのメソッドの意味や使い方
メソッドという言葉を聞いたことはありますか?英語の意味で考えると方法ややり方という意味です。
メソッドとは結論、クラスの中で定義した関数のことを言います!
それぞれののキーワードをあまり理解しないままこれを見てるともう訳がわからない!となってしまうので難しく感じる人は関数や定義について復習することをオススメします。
ということで、実は今までやってた定義のことをクラスの中でやった場合にメソッドというだけとも言えるかと思います( ´∀`)
ややこしく感じますが、そう考えるとなんてことないですよね♪
ただ、1つだけ注意点があります。
まず例を見てみましょう。
class Cakemenu:
def talk(self):
print(“いらっしゃいませ!”)
上記の例ですがお気づきでしょうか。
def talk(self):と()の中にselfが入ってますね?
メソッドの定義をする場合、()の中にselfを入れないといけないというところがいつもと違うところです!
つまり、第1引数に必ずselfを入れるというところが注意点になります。
慣れていけば問題ない部分なので最初は忘れても仕方ないかもしれないですね(・´ω`・)
次はいま作ったメソッドを実際に使ってみましょう!
class Cakemenu:
def talk(self):
print(“いらっしゃいませ!”)
menu_info1 = Cakemenu()
menu_info1.talk()
実行:いらっしゃいませ!
このように使うことができます。
インスタンス.メソッドの名前()で使うことができるので、ここは使い方として覚えてしまったほうが楽かと思います♪
ちなみにですが、このことをインスタンスメソッドといいます。クラスの中でインスタンスにメソッドを使うのでそのままですよね!
さて、基本的な使い方はこのくらいにしてもう少し具体的に使っていき学びを深めていきますしょう♪
class Cakemenu:
def info(self):
print(self.cakename)
menu_parts1 = Cakemenu()
menu_parts1.cakename = “苺のケーキ”
menu_parts1.info()
実行:苺のケーキ
こんなふうに使います♪
僕が初めてこの使い方を知った時、なんかわかるようでわからないというか混乱しましたね(笑)
実はこれ、def info(self):と書いてありますが、selfを使うことでmenu_parts1.info()を代入しているんです!
この辺で代入や変数の意味がわかっていないとまず理解することはできません(´・ω・`;A)
ですが、一度復習したら問題なく理解できるかと思います。わからない方はあわせて変数や代入についての記事を参考にして下さいね♪
今回の場合printの()にself.cakenameと書くことでmenu_parts1.cakenameの苺のケーキを代入することができています。
そのため実行すると苺のケーキと表示されるわけですね。
とはいえ、初見の方だとホントに混乱すると思います((((;´・ω・`)))
いまは何となくの理解でも次確認したときにはだいぶわかるようになるので心配せずとも大体の方がここで辛い気持ちになります(^^;)
ちょっとまとめてみますね♪
クラスの中で関数を定義することをメソッドといい、()にselfと入れるところが注意点です。(第1引数にself)
使い方はインスタンス.メソッドとすることで使うことができます。このことをインスタンスメソッドといいます。
selfを入れることにより、以降作っていくインスタンスメソッドをselfに代入することができるのが特徴です。
どうでしょうか?ちょっと日本語にしてみます。僕のイメージで言っているので厳密にいえば正しい表現ではないです。
クラスCakemenuを作ります。その方法としてinfoにこれから作っていくインスタンスを入れていきます。
今回はprintの()にインスタンスメソッドを代入してほしいです。
インスタンス1(menu_parts1)はCakemenuのインスタンスです。
インスタンス1(menu_parts1)のメソッド(cakename)は苺ケーキです。
それではこのインスタンス1(menu_parts1)を最初に定義したinfo(self)に代入して下さい。
いかがでしょうか?僕のイメージなので参考になると良いのですがこういうイメージをすると文系の方はイメージしやすいのではないかと思います。
これでもまだ混乱している方多いと思うので今は何となくで大丈夫です(*´ω`)
ここまでわかればもう大丈夫ですが、数字を扱うときも確認してみましょう!
文字列型と数値型に注意しよう
strとintについてはすでに勉強されてますか?
もしわからない、微妙という方はstrとintについて学んでおきましょう♪
数値を表示するときに文字列とあわせるときは表示したい数値を文字列に変換する必要があります!
ちょっとややこしいですが実際にやっていきましょう。
class Cakemenu:
def info(self):
print(self.cakename + “の値段は” + str(self.cakeprice) + “円です。”)
menu_parts1 = Cakemenu()
menu_parts1.cakename = “苺のケーキ”
menu_parts1.cakeprice = 250
menu_parts1.info()
実行:苺のケーキの値段は250円です。
このようになります!
menu_parts1.cakeprice = 250 と書いているのでこの250を表示したいときは文字列にする必要があります。
str(self.cakeprice)のようにstrを使い文字列にしていることがわかると思います。
これでクラス、インスタンス、メソッドについて一通りお伝えしました!
これは今後当たり前のように使っていく内容なので時々復習して学びを深めておくほうが安心です(`・ω・´)ノ
次はメソッドについてもう少し学んでおかないといけない内容があるのでそちらもあわせて学んでいきましょう♪
プログラミング初心者向け動画!【エコーズラインプログラミング】