【python入門】pythonのclassを解説:オブジェクト指向プログラミングへの第一歩

python
Yamu
Yamu

今回はpython
クラスと
インスタンスに
ついて説明します

[R]※本サイトにはプロモーションが含まれています

合わせて読みたい内容
【python】pythonのclass構造を理解するクラス内属性とメソッドについて説明しています

オブジェクト指向

プログラミングの設計・開発手法の一つ

変数と処理を

オブジェクトと呼ばれるもので構成する

アプローチです

クラスとは

クラスはデータ(属性)と

操作(メソッド)をまとめた

設計図のようなものです

Pythonのクラス定義

クラスを作るためのpythonの構文を紹介します

class クラス名 :
    属性 = 値

   def メソッド(self);
       メソッドの処理

pythonではclassは

class クラス名で定義されます

インスタンス

クラス変数に実データを入れて

処理を実体化したもの

クラスが設計図としたら

インスタンスは設計図を元

具体的に生成されたものです

Yamu
Yamu

クラスに

具体的な値が入って
インスタンス化

されていますね

クラスを作る

Userというクラスを作ります

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  # 誕生日が過ぎている場合

コードの説明を少しします

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

__init__内で

名前、年齢、誕生日を引数として受け取り

インスタンス変数として設定しています

オブジェクト名前、年齢、誕生日

人によって固有の値なので

インスタンスを生成する時に初期化されます

def birth_year():

生まれた年を計算するメソッドです

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

せっかくUserという

クラス(設計図)を作っても

実データを入れて実体化しないと使えません

名前と、年齢と、生まれた月を入力して

クラスを実体化(インスタンス化)してやる

必要があります

import tkinter as tk
from tkinter import simpledialog
from user_class import User

# Tkinterのウィンドウを作成
root = tk.Tk()
root.withdraw()  # メインウィンドウを非表示にする

# ユーザー入力の取得
name = simpledialog.askstring("入力", "名前を入力してください:")
age = simpledialog.askinteger("入力", "年齢を入力してください:入力例 28歳→28")
birth = simpledialog.askinteger("入力", "生まれた月を入力してください: 入力例1月→1")

# 入力チェック
if not name or age is None or not (1 <= birth <= 12):
    print("正しい入力をしてください。")
else:
    # Userインスタンス(オブジェクト)を作成
    user1 = User(name, age, birth)

    # 生まれた年を計算
    birth_year = user1.birth_year()
    print(f"{user1.name}さんの生まれた年は {birth_year} 年です。")

# Tkinterのウィンドウを閉じる
root.destroy()

実行結果

user1 = User(name, age, birth)

でuser1インデンスを作成しています

selfとは

selfという引数は

慣例として使われている変数名です

メソッドの第一引数に宣言するselfは

インスタンス自体を表しています

参考文献

Yamu
Yamu

4.1 class構文より

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