【python入門】class構文 : データ属性とメソッドについて理解する

python
Yamu
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
Yamu

一つずつ

説明していきます

コンストラクター

インスタンスの初期化を行うコンストラクターは

下記の構文です

    def __init__(self, name, age, birth_month):
        self.name = name
        self.age = age
        self.birth_month = birth_month 

クラスをインスタンス化する際に

初期化されnameとageとbirth_monthに

実体(実数)が入ります

Yamu
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
Yamu

4.2 属性とメソッドより

タイトルとURLをコピーしました