かんたんなクラス解説
申し訳ばかりの異世界要素入れたプログラミング講座、はーじまーるよー!
はい、ちょっとノリを変えてみました。
異世界、憧れなんでしょうか? 死にたくないので異世界転生は無理そうですが……転移ならワンチャン……?
それはさておき、今回はクラスです。
クラスと言っても学校のクラスとは全く関係ないです。クラスとは設計図のようなもので……まあ見た方が早いですね……そんな何十行もないんで例によって載せます。
class Sword_and_Magic():
def __init__(self,worldName):
self.worldName = worldName
print("ようこそ異世界"+ self.worldName + "へ!")
def guild(self):
print("ここ"+self.worldName+"でのあなたのレベルが測定できます")
メンバ変数などもあるのですが、ここではworldNameですね。
意味はこれから説明していくのでご心配なく。
まずはclass Sword_and_Magic():ですね、お察しの通りこれはSword_and_Magicクラスの宣言です。
意外と読む人がいるので異世界ものにもこびたネーミングにしておきます。
注意が必要なのが__init__(self,worldName):です。これはクラスの設計図の通りに作られたインスタンスと呼ばれる実体が生成されたときに自動で呼ばれる関数です。
”__”←これは「ダンダー」と読むそうです、ダブルアンダースコアの略でしょう。
さらにPythonをやるなら避けて通れない「self」が登場しています。
selfは処理系によって予約された言葉ではありません。実際この中の「self」をまとめて別の言葉に置き換えてもちゃんと動きます。
ですが慣習に則ってselfをみんなが使っています、変えるのも大変ですしPyCharmが自動補完で入れるのが「self」なのでこのままにしておきましょう。
下の関数はギルドへの案内です(気持ちばかりの異世界推し)このクラスを実際に使うにはインスタンスと呼ばれる実体が必要です。
さっき設計図と書きましたが、レシピと呼んでもいいです。
どんなにおいしい料理でもレシピを書いた紙を食べることはできませんね、レシピはその通りに作って初めて食べられる料理になります。
Pythonではこの実体を作るのは非常に簡単で
SandM = Sword_and_Magic("ミスティルテイン")
と書くだけです。ここではSandMという変数にSword_and_Magicクラスのインスタンスを作って入れています。
ミスティルテインってなんぞや? はいそれも説明しましょう。
def __init__(self,worldName):
とても簡単に言えばこのコンストラクタ(この場合ワールドコンストラクタとか呼ぶとかっこいいかな……)に入れるworldNameつまり世界名を設定しています。
selfについては自分自身のクラスを指しているわけです。これを付けるとグローバル変数や引数じゃないよ位に覚えておけばいいです。
これを次の行
print("ようこそ異世界"+ self.worldName + "へ!")
で使用しています実行結果は
ようこそ異世界ミスティルテインへ!
になります。ああ! 異世界人が自分の世界を異世界言わんやろとか言わないで! 異世界で検索に引っかかりたいんです! ほんの出来心で……
まあそれはさておき、これでクラスのインスタンスを生成したときに上記のメッセージが表示されます。
これがコンストラクタです。インスタンスが生成されるときに自動で呼ばれるという意味はこういうことです。
ではguildクラス内関数を実行しましょう。大丈夫! とっても簡単で普通の関数呼び出しにインスタンス名+.を付けるだけです。
SandM.guild()
関数名にインスタンス名のSandMが付いただけです.で区切ってますね、つまりSandMというインスタンスのメンバ関数guildを呼び出しています。
SandM.って要るの? それも確かな疑問です。これについては次の「もう一つ」インスタンスを作ったら分かります。
WE = Sword_and_Magic("ワールドエンド")
ここでWEというSword_and_Magicのインスタンスを生成します。
では以下2行を実行するとどうなるでしょう?
SandM.guild()
WE.guild()
どちらも同じクラスSword_and_Worldの同じ関数guild()を呼んでいます、同じ関数を呼んでいますが実行結果は異なります
ここミスティルテインでのあなたのレベルが測定できます
ここワールドエンドでのあなたのレベルが測定できます
このようにコンストラクタで代入された世界名が異なっていますね。つまり二つのインスタンスは別物ということです。
これがクラスというものです。意外と簡単ですね。難しいのはコンストラクタ__init__くらいでしょうか?
まあこれはインスタンス生成時に自動で呼び出される位に覚えておきましょう。
以上! クラスの簡単な説明でした、読者の皆さん! 今回もありがとうございます。




