24章意図の宣言――型注釈Declared Intentions

制約

  • 型を強制する仕組みが存在する。
  • 手続きや関数は、期待する引数の型を宣言する。
  • 呼び出し側が期待しない型の引数を渡した場合、型エラーが発生し、手続きや関数は実行されない。

プログラム

 1 #!/usr/bin/env python
 2 import sys, re, operator, string, inspect
 3
 4 #
 5 # メソッド呼び出しで引数の型を強制するためのデコレータ
 6 #
 7 class AcceptTypes:
 8     def __init__(self, *args):
 9         self._args = args
10
11     def __call__(self, f):
12         def wrapped_f(*args):
13             for i in range(len(self._args)):
14                 if type(args[i]) != self._args[i]:
15                     raise TypeError(
                       f"Expecting {self._args[i]} got {type(args[i])}")
16             return f(*args)
17         return wrapped_f
18 #
19 # 関数定義
20 #
21 @AcceptTypes(str)
22 def extract_words(path_to_file):
23 with open(path_to_file) ...

Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.