2012-02-29 24 views
2

関数が受け取ることを期待するパラメータの型を文書化する最良の方法は何ですか?コーディングスタイル:パラメータの型を明示的に決定する方法関数に渡す必要がありますか?

機能によっては、オブジェクトのフィールドが1つまたは2つしか使用されないことがあります。時には、このフィールドには一般的な名前(get()、set()、reset()など)があります。このような状況では、コメントを残す必要があります。

... 
    @staticmethod 
    def get(postId, obj): 
     """obj is instance of class Type1, not Type2""" 
     inner = obj.get() 

もっと明白な方法がありますか?おそらく、オブジェクト名にはtypenameという名前が含まれているはずですか?

答えて

7

pythonの 'duck-typing'(遅延バインディング)の振る舞いを考えると、特定の型を要求するのは間違いでしょう。

あなたの関数が取るべきでない型がわかっている場合、それらを検出した後に例外を発生させることができます。それ以外の場合、渡されたオブジェクトが適切なプロトコルをサポートしていない場合は、単に例外を送出します。

ドキュメントに関しては、必要なプロトコルをドキュメントストリングに入れてください。

3

「ダックタイピング」は、実際の変数の種類に依存するのではなく、その動作に依存しています。だから私は、オブジェクトを含める必要があるフィールドを文書化することをお勧めします。

1

まず、メソッドに適切な名前を付け、意味がある場合はプロパティを使用します。

ダックタイピングのハングアップを試してください。それはかなり便利です。もしそうでなければ、abstract base classesがあなたの望むことをするのに役立つかどうか試してみてください。

関連する問題