Python | クラスの使い方

2021年5月31日

公開日:2021/5/31
更新日:2021/6/2

Pythonでは,クラスを用いるとデータと機能を合わせて出力することができる.以下に,コンストラクタ,インスタンスメソッド,インスタンスを用いて,クラスの説明をする.また,コンストラクタに関係するデストラクタにについても説明をする.

◆実施環境

Python 3.8.8

■コンストラクタを用いたクラスの使い方

コンストラクタを用いる際,"__init__"を利用する.コンストラクタの第1引数には"self"を書き,第2引数から好きな引数を記述できる.引数の初期値も記述可能である.コンストラクタの後に,インスタンスメソッドを設定する.その後,"変数名 = クラス名(引数)"によってインスタンスを生成することができる.

# 1の処理
class Chocolate:

  def __init__(self,maker,brand,year): # コンストラクタ
    self.maker = maker
    self.brand = brand
    self.year = year

  def introduction(self): # インスタンスメソッド
    print(f'{self.maker}は{self.year}年に{self.brand}を発売した')

myChoco1 = Chocolate('Meiji','Fran',1999) # インスタンス生成
myChoco2 = Chocolate('Glico','Gaba',2005)

myChoco1.introduction()
myChoco2.introduction()

■実行結果

# 1の結果
Meijiは1999年にFranを発売した
Glicoは2005年にGabaを発売した

■コンストラクタを用いないクラスの使い方

# 1の処理
class Human:
  """人間クラス"""
  country = 'Japan'
  year = 2000
  name = 'Taro'

  def introduction(self): # インスタンスメソッド
    print(f'{self.name}は{self.year}年に{self.country}で生まれた')

  def print_country(self):
    print(self.country)

  def print_year(self):
    print(self.year)

  def print_name(self):
    print(self.name)

myhuman = Human() # # インスタンス生成
myhuman.introduction()
myhuman.print_name()
print(myhuman.country)

■実行結果

# 1の結果
Taroは2000年にJapanで生まれた
Taro
Japan

■デストラクタの使い方

デストラクタを用いる際,"__del__"を利用する.デストラクタはインスタンスを削除することができる.

# 1の結果
class Chocolate:

  def __init__(self,maker,brand,year): # コンストラクタ
    self.maker = maker
    self.brand = brand
    self.year = year

  def __del__(self):
    print('デストラクタ実行')

  def introduction(self): # インスタンスメソッド
    print(f'{self.maker}は{self.year}年に{self.brand}を発売した')

myChoco1 = Chocolate('Meiji','Fran',1999) # インスタンス化
myChoco1.introduction() # 13行目が出力

del myChoco1 # デストラクタ実行により,インスタンス削除

myChoco1.introduction() # 16行目と同じ処理だが,インスタンスが生成されていないので,エラーになる

■実行結果

# 1の結果
Meijiは1999年にFranを発売した
デストラクタ実行
NameError: name 'myChoco1' is not defined

以上