私はまだPythonにかなり慣れていないので、動的型付けに慣れようとしています。特定の型のパラメーターを期待する関数またはクラスがありますが、それに対して強制可能な別の型の値を取得できる場合があります。たとえば、が期待しているfloat
が、代わりにintまたはdecimalを受け取る場合があります。または、文字列を期待するかもしれませんが、代わりに__str__
特別なメソッドを定義するオブジェクトを受け取ります。
引数を正しいタイプ(およびその理由)に強制するためのベストプラクティスは何ですか?関数/クラスまたは呼び出し元でそれを行いますか?発信者の場合、関数でもチェックしますか?例えば。
代替案1:
def myfunc(takes_float):
myval = float(takes_float)
myfunc(5)
代替案2:
def myfunc(takes_float):
myval = takes_float
myfunc(float(5))
代替案3:
def myfunc(takes_float):
assert isinstance(takes_float, float)
myval = takes_float
myfunc(float(5))
私はすでにこの答えとこれを読んでいて、Pythonで型をチェックするのは「悪い」と言っていますが、静的に型付けされたコンパイラによって即座に検出される非常に単純なバグを追跡するのに時間を無駄にしたくありません言語。