Pythonでカスタム例外と型ヒントを使いこなす

この記事では、Pythonプログラミングにおいてカスタム例外と型ヒントをどのように活用するかについて解説します。具体的なコード例とその解説、応用例を含めて説明していきます。

目次

カスタム例外とは?

カスタム例外とは、Pythonの組み込み例外クラス以外の、ユーザーが自分で定義する例外クラスのことを指します。組み込み例外クラスでは対応しきれない特定の状況で例外を発生させるために使用されます。

カスタム例外の基本的な定義方法

# カスタム例外の定義
class MyException(Exception):
    pass  # 特別な処理はここに記述

このように`Exception`クラスを継承することで、独自の例外クラスを作成することができます。

型ヒントとは?

型ヒントとは、Python 3.5以降で導入された機能で、変数や関数の引数、戻り値の型を明示的に注釈することができます。

型ヒントの基本的な使用方法

from typing import List

def my_function(a: int, b: str) -> List[int]:
    return [a, int(b)]

このように関数の引数や戻り値に型を指定することで、コードの可読性が上がります。

カスタム例外と型ヒントの応用例

応用例1: ユーザー認証のカスタム例外

# ユーザー認証のカスタム例外
class AuthenticationError(Exception):
    def __init__(self, message: str):
        self.message = message

# ユーザー認証の関数
def authenticate(username: str, password: str) -> bool:
    if username == "admin" and password == "1234":
        return True
    else:
        raise AuthenticationError("認証に失敗しました。")

この例では、ユーザー認証でカスタム例外`AuthenticationError`を使用しています。また、関数の引数と戻り値に型ヒントを使用しています。

応用例2: データ検証

# データ検証のカスタム例外
class DataValidationError(Exception):
    pass

# データ検証の関数
def validate_data(data: dict) -> None:
    if 'name' not in data or 'age' not in data:
        raise DataValidationError("データが不正です。")

validate_data({'name': 'Alice', 'age': 30})  # これは例外を発生させない
validate_data({'name': 'Alice'})  # これはDataValidationErrorを発生させる

応用例3: APIレスポンスの検証

# APIレスポンスの検証のカスタム例外
class APIResponseError(Exception):
    pass

# APIレスポンスの検証の関数
def check_api_response(response: dict) -> None:
    if 'status' not in response or response['status'] != 'ok':
        raise APIResponseError("APIのレスポンスが不正です。")

この例では、APIのレスポンスが不正な場合にカスタム例外`APIResponseError`を使用しています。関数の引数として`response: dict`と型ヒントを指定しています。

まとめ

カスタム例外と型ヒントを効果的に使うことで、Pythonプログラムの可読性や信頼性が向上します。特定の状況での例外処理や型の明示が可能となり、より堅牢なコードを書くことができます。

コメント

コメントする

目次