WEBスキル

Pythonの「メゾッド」「クラス」について(self,__init__はこう理解しよう)

python classクラス, メゾッド

プログラミングが苦手としている人の多くは、このクラスの考え方が理解できずに難しいと感じているのではないでしょうか?pythonの言語も他の言語と同様に「クラス(class)」をよく用いるため、この部分が理解できなければ、プログラミングの独学は非常に難しくなると言い切ってよいでしょう。

pythonをまだ勉強中で、まだ理解できていない方は、この記事を読めば、しっかりと理解できますので、ぜひ最後まで読んでください。

【Python】クラスについての学習は「オブジェクト」「データ」「メゾッド」が何かを理解することから始まる

Pythonのコードは、数値や文字列といった人がプログラム上に記載するものから、すでに用意されているデータ構造や関数やモジュールに至るまですべてを「オブジェクト」と呼びます。分かりやすく言うと、プログラムは、すべてオブジェクトで作り上げているのだと思ってかまいません

そのオブジェクトには2種類のオブジェクトが存在します。

  • 1つは、「属性」や「変数」と呼ばれるデータ
  • もう一つは、「関数」や「メゾッド」と呼ばれるコード

どちらもデータ、コードとは呼ばれず、「属性」「変数」「関数」「メゾッド」と呼ばれることが大半だと思っておいてください。しかし、「属性」や「変数」のデータのことをオブジェクトと呼んでいる場合もあるので注意です。しっかりと理解するために以下表でまとめておきます。

名称呼び方意味
データ属性
変数
オブジェクト
数字や文字列などのデータそのものを指す数字:4
文字列:”dog”
変数:X
コード関数
メゾッド
特定の処理(プログラム上の動作)を指すfunc()
practice()

ニュアンスとしては、データ(属性・変数・オブジェクト)が名詞、コード(関数、メゾッド)を動詞として捉えるとわかりやすいかと思います。

このデータとコードを使ってPythonプログラミングを行うことになるのです。

class(クラス)を定義すれば、もっと便利で簡単にコードが書ける!

クラスを定義することで、変数や属性、関数やメゾッドが一束にすることができます。

そもそもクラスというのは、上で説明した変数や属性、関数やメゾットを一連の処理するようにしたパッケージであると思っておいて下さい。

クラスは頻出なのですぐに見慣れてくると思います。

クラスの定義とそのクラスの呼び出し例について以下順を追って説明します。

何をしているかclassの定義例内容呼び出し方法注釈
classの原型
何もしない
class Adult():
pass
Adultという名前のクラスを作成しただけで、
何もしないクラスを定義しています。
person = Adult()Adultの文字列はどんな文字列でも構いません。
passは「このクラスが空である」ことを示している。
classに初期化を
入れた。
特に何もしない
class Adult():
def __init__(self):
pass
Adultという名前のクラスを初期化するだけで、
それ以外は、何もしないクラス。
person = Adult()__init__で初期化するための特殊文字を使っている
selfは作られたオブジェクト自体を示している。
nameという変数を与えてみる。class Adult():
def __init__(self ,name ):
  self.name = name
Adultという名前のクラスを初期化し、クラスAdultのnameの変数に、代入しています。person = Adult(“DEN”)クラスの呼び出し時に、Adult()のカッコ内に入れた変数は__init__の初期化の変数になります。※

※ルール:__init__は初期化メゾッドと呼び、__init__()のカッコ内の第一引数は必ずselfが入ります。そのため、クラス内では、「def __init__(self , 好きな変数):」という風に書かれることになります。

ん?self.name = name なんだこれ?

def __init__(self , name)の初期メゾットのカッコ内の変数はnameとなっていますが、self.name=nameという2つの”name”が登場してしまいました。(上表の赤線部)

ここで同じnameをつかっていますが、実は別の変数なのです。、

➀def __init__(self , name)の中にあるname は一時的な変数で、処理が終われば消えてしまう値。

➁self.nameのnameは、class Adultで定義されている値で、personというクラスの中でデータが保管される。

つまり、self.nameにデータを移し、クラスの外から参照できるようにするのです。

ここで重要なルールをお伝えします。

classの中の値を参照する場合は、「class名.変数名」を使う

///クラスの定義///

class Adult():
def __init__(self ,name ):
  self.name = name

  print(‘クラスの内部での名前は ‘, self.name)

///クラスの呼び出し///

person = Adult(“DEN”)

NAME = person.name

上記の例を参考に、クラスの中で処理された値を参照したい場合、2つのやり方が存在します。

1,クラスの中からそのクラスの値を参照する場合、

「self.参照したい変数名」を使用します。

例の場合は、「self.name」を使用することになります。

2,クラスの外からそのクラスの値を参照する場合、

「クラス名.変数名」を使用すればOKです。

例の場合は、「person.name」を使用することになります。

ABOUT ME
den
完全独学でWEBデザインを無謀にも挑戦している中年男。 工場勤務の会社員で3児の父。 チャレンジを忘れず、妻に怒られても心はおれず。 有益な情報を発信し、これを見ている人の為になればと思っています。