2

私はPythonコードを数週間しか書いていなかったので、まだ土地のレイアウトを把握しています。しかし、時々「ユーザー」によって呼び出され、内部的に頻繁に使用される可能性があるメソッドがあるとしましょう(つまり、呼び出しの前に引数がすでにチェックされています)。これが私が現在行っていることです:

#The method the 'user' should call:
def do_something(self, arg1, arg2, arg3):
    #write code to do error checking on arg1, agr2, arg3
    #raise exceptions, return codes, etc: depends on whether you are an explicit lover
    #or an implicit lover, it seems. :-)
    ... error checking code here...
    #Now call the 'brother' method that does the real work.
    return self._do_something(self, arg1, arg2, arg3, arg3)

#The method other private methods should call with already validated parameters
def _do_something(self, arg1, arg2, arg3, arg3):
    #don't do error checking on the parameters. get to work...
    ... do what you do...
    return whatever you're supposed to return

これは私には論理的に思えます。これを行うためのより良いPython風の方法はありますか?

ポール

4

4 に答える 4

2

それは結構です。ただし、「brother」メソッドの呼び出しはコードでは間違っています。あなたはこのようにそれをするべきです:

# Now call the 'brother' method that does the real work.
return self._do_something(arg1, arg2, arg3, arg3)

つまり、これはオブジェクトメソッドであり、グローバル関数ではないため、自己参照を「介して」呼び出す必要があります。

于 2009-10-27T16:09:52.217 に答える
0

Pythonではプライベートメンバーの「真の」サポートはありませんが、メンバーをプライベートとして示すPythonの方法は、2つの先頭の下線を使用することです。あなたの場合、__do_something

詳細については、python.org--classesを参照してください。

于 2009-10-27T16:07:47.713 に答える
0

エラーチェックコードが非常に高価でない限り、常にエラーチェックを行うメソッドは1つしかありません。いくつかのチェックを繰り返す場合がありますが、セキュリティが強化され、誰かがクラスから継承する場合に便利です。

後でパフォーマンスが必要になった場合は、いつでも結果をキャッシュしたり、他のことをしたりできます。

于 2009-10-27T16:09:59.407 に答える
-1

私は自分でPythonを学んでいる(そして楽しんでいる)だけですが、それがその方法だと思います。ただし、プライベートメソッドには2つのアンダースコアがあり、「self .__ do_something()」のように呼び出される必要があります。

于 2009-10-27T16:09:11.597 に答える