本日の学習(7/12)

2025-07-12
  • 本日の学習
    • FastAPI
    • Pytest
  • Hook Functions
  • 開始時、テスト収集時、テスト実行時などに様々なhookを設定可能
    • Python
  • Enum
  • 各メンバーがインスタンスとなる。strやint, floatなどと多重継承することで、そのEnumインスタンス自体が対象の型(str)などとして認識される
  • dataclass
  • fronze=True , 設定した値は変更不可
class OrgRoleCode(str, Enum):
    OWNER = "owner"
    ADMIN = "admin"
    DEVELOPER = "developer"
    BILLING = "billing"
    GENERAL = "general"
    
@dataclass(frozen=True)
class OrgRole:
    code: OrgRoleCode
    name: str
    description: str
    permissions: Set[str]
  • Annotated
Annotatedの構文:
Annotated[, メタデータ1, メタデータ2, ...]

FastAPIでの使い方
# 第1引数: 実際の型(Member)
# 第2引数: FastAPIが使うメタデータ(Depends())
CurrentMember = Annotated[Member, Depends(get_current_member)]

その他の活用例:
# パスパラメータの制約
UserId = Annotated[int, Path(gt=0, description="User ID")]

# クエリパラメータ
PageSize = Annotated[int, Query(ge=1, le=100, default=10)]

# フォームデータ
Username = Annotated[str, Form(min_length=3)]

これにより依存性注入だけでなくバリデーションルールも型として再利用できるようになりコードがより宣言的
で保守しやすくなります