Python3 | ⑥クラスの定義
こんにちは、現役理系大学生のShogoです!
今回は、Python3超入門講座第6弾です!
前回の記事を読んでいない方は、こちらからご覧ください。
今回の内容は、「クラスの定義」です。
クラスを扱うことができれば、よりわかりやすいコードを書くことができるようになります!今回の講座でしっかりと覚えていきましょう!
6-1 クラスの定義
クラスを使うと、作りたいプログラムに応じたデータ構造を作ることができます。
そうはいっても言葉ではわかりにくいと思うので、コードで説明していきます。
class Fruits(object):
def apple(self):
print('red')
fruits = Fruits()
fruits.apple() # red
例えば、Fruitsというクラス名を作ります。ここにappleという関数をつくり、出力は'red'、つまり、果物の色とします。
このコードはこのように進みます。
fruits.apple( )を記述
→Fruitsクラスの関数appleが呼び出される
→print('red')で出力
クラスでコードをまとめるメリットは、データ構造が複雑になっても、可視性があることです。
例えば、先程のコードにorange、grape、bananaを追加するとします。すると、コードはこのようにかけます。
class Fruits(object):
def apple(self):
print('red')
def orange(self):
print('orange')
def grape(self):
print('black')
def banana(self):
print('yellow')
fruits = Fruits()
fruits.apple() # red
fruits.orange() # orange
fruits.grape() # black
fruits.banana() # yellow
fruits.apple( )、fruits.banana( )のように綺麗なコードになっていることがわかります。
6-2 クラスの初期化 __init__(コンストラクタ)
クラスの初期化は、「__init__」で行います。これは、initialize(=初期化)の略の頭文字を使っています。
これは、クラスの初期値を設定するときに用いられます。
例をみていきましょう。
class Fruits(object):
def __init__(self):
print('sweet')
def apple(self):
print('red')
fruits = Fruits() # sweet
# fruits.apple()
6-1のコードに「__init__」を追加しました。
これによって、「fruits = Fruits()」を記述するだけで、「__init__」のメソッド、つまり、「'sweet'」が出力されます。
6-3 self変数
self変数は、自分自身(クラス自身)に値を保持することができます。
例えば、次のような場合です。
class Fruits(object):
def __init__(self, name):
self.name = name
print(self.name)
fruits = Fruits('Apple') # Apple
「Fruits(object)」に「name」を保持させたいとき、「__init__」に引数として「name」を書きます。そして、自分自身の名前(self.name)に引数で持ってきた名前(name)を代入します。
ここで、「Fruits()」に「'Apple'」を記述することで、「name」に「'Apple'」が渡され、出力されるというわけです。
✅他のメソッドでも呼び出せる
「__init__」は初期値として設定できると述べました。ですので、この初期値は他のメソッドでも活用することができます。
class Fruits(object):
def __init__(self, name):
self.name = name
def color(self):
print('{} is red.'.format(self.name))
fruits = Fruits('Apple')
fruits.color() # Apple is red.
先程のコードで、「self.name」を「'Apple'」に設定しました。
「color()」という関数を作ったとき、「format(self.name)」で先程と同様に値を呼び出せます。したがって、「fruits.color()」で「Apple is red.」が出力されます。
6-4 __del__(デストラクタ)
「__init__」はコンストラクタと呼ばれています。これに対し、「__del__」をデストラクタと呼びます。
「__del__」はクラスの最後に実行するようになっています。例をみていきましょう。
class Fruits(object):
def __init__(self, name):
self.name = name
def color(self):
print('{} is red.'.format(self.name))
def taste(self):
print('{} is sweet.'.format(self.name))
def __del__(self):
print('{} is excellent!'.format(self.name))
fruits = Fruits('Apple')
fruits.color()
fruits.taste()
# Apple is red.
# Apple is sweet.
# Apple is excellent!
クラスの中身がすべて実行されたあと、最後に記述されるようになっています。
「__del__」はあまり使われることがないので、最低限存在だけは覚えておくようにしましょう。
まとめ
今回は、「クラスの定義」を学習しました。
関数をまとめる、または、可視性に優れたコードを書く場合は、必須となってくるものなので、ここでしっかりと覚えておきましょう!
質問や訂正があれば、遠慮なくこの記事にコメント、もしくは、TwitterにDMをしてください!(@shogo_python)
今回の記事が"いいね!"と思ってくれた方は、スキとフォローをよろしくおねがいします!
では、またの機会にお会いしましょう!
Python3 超入門講座 一覧はこちらから