Yamu
今回はpythonの
classの構文内の
コンストラクター
データ属性
メソッドについて
説明し
クラスの構造を
理解します
[R]※本サイトにはプロモーションが含まれています
合わせて読みたい | 内容 |
pythonのclassを解説:オブジェクト指向プログラミングへの第一歩 | クラスとインスタンスについて説明しています |
【python入門】特殊メソッドの挙動を確認する | 特殊メソッドを紹介してます |
クラスとは?
クラスはデータ(属性)と
操作(メソッド)をまとめた
設計図のようなものです
クラスの構造
サンプルプログラムを利用して
クラスの詳細構造を説明していきます
from datetime import datetime
class User:
user_type = None
def __init__(self, name, age, birth_month):
self.name = name
self.age = age
self.birth_month = birth_month
def birth_year(self):
current_year = datetime.now().year
current_month = datetime.now().month
# 年齢と月から西暦何年生まれかを計算する
if current_month < self.birth_month:
return current_year - self.age - 1 # 誕生日がまだ来ていない場合
else:
return current_year - self.age # 誕生日が過ぎている場合
このクラスの構造は以下のようになります
Yamu
一つずつ
説明していきます
コンストラクター
インスタンスの初期化を行うコンストラクターは
下記の構文です
def __init__(self, name, age, birth_month):
self.name = name
self.age = age
self.birth_month = birth_month
クラスをインスタンス化する際に
初期化されnameとageとbirth_monthに
実体(実数)が入ります
Yamu
インスタンス化する際に
名前、年齢、月に
斎藤巧, 28, 1と
値が入る部分です!
データ属性
データ属性は値を格納する場所
データ属性は
クラス変数、インスタンス変数が
存在します
クラス変数
クラス変数とはクラス全体で共有される変数のこと
クラス変数は下記コードでアクセスできます
print(User.user_type)
クラス変数を使用することで
データの重複を防ぎ
メモリ使用量を節約できます
インスタンス変数
インスタンス変数は、メソッド内で
「self.属性名 = 値」で定義できます
def __init__(self, name, age, birth_month):
self.name = name
self.age = age
self.birth_month = birth_month
インスタンス変数は下記コードでアクセスできます
# インスタンス化
user1 = User("斎藤巧",28,12)
print(user1.name)
print(user1.age)
print(user1.birth_month)
実行結果
メソッド
メソッドは関数のように使用される
メソッドは以下の3種類がある
インスタンスメソッド
クラスメソッド
静的メソッド
インスタンスメソッド
インスタンス化されたクラスに対して
実行されるメソッド
一般的にメソッドと言われるとこちらに該当します
第一引数にselfが渡されて
クラスのデータ属性メソッドが利用可能になります
下記のコードはインスタンス変数
self.age, self.birth_monthを利用して
生まれた年を西暦で計算するコードになります
def birth_year(self):
current_year = datetime.now().year
current_month = datetime.now().month
# 年齢と月から西暦何年生まれかを計算する
if current_month < self.birth_month:
return current_year - self.age - 1 # 誕生日がまだ来ていない場合
else:
return current_year - self.age # 誕生日が過ぎている場合
インスタンス変数は下記コードで利用できます
# インスタンス化
user1 = User("斎藤巧",28,12)
print(user1.birth_year())
実行結果
参考文献
Yamu
4.2 属性とメソッドより