3

はいの場合、以下よりも良い方法を提案できますか?詳細/正当化してください。

class X:
    ...

if __name__ == '__main__':
    # TODO: Should we bother doing this?
    errorMessage = 'This class is not meant to have a main method. Do not execute directly.'
    print(errorMessage)
    raise Error(errorMessage)
4

4 に答える 4

3

一般的なパターンは、Pythonモジュールの単体テストをモジュール本体内に配置することです。例えば:

if __name__ == "__main__":
    run_unit_tests()

ただし、これを行わない場合は、モジュール本体のコードを追加する必要はありません。スクリプトとして実行された場合、本文コードのないPythonモジュールは何もしません。

于 2010-12-05T23:54:07.210 に答える
3

私はこれをしません。

理由は次のとおりです。python -i scriptname.pyスクリプトを読み込んで、スクリプトの実行後にインタラクティブコンソールにドロップするために使用できます。したがって、取得するのはすべての定義済み関数であり、適切と思われるように操作/テストできます。

あなたのやり方では、これを行うとエラーが発生します。

于 2010-12-05T23:56:10.533 に答える
2

いいえ、それだけの価値はありません。結局のところ、トップレベルの関数呼び出しがない場合、コードは何もしません。

于 2010-12-05T23:53:38.003 に答える
1

1)いいえ。「呼び出せない」場合は、とにかく例外が発生します。

2)if __name__ == '__main__'構成は、クラスではなくモジュールを参照します。クラスを「呼び出す」と、クラスのインスタンスが作成されます。モジュールを「呼び出す」こともありません。それらをインポートまたは実行します。

用語にはもっと注意してください。概念を正しく理解すると、この種の質問に対する答えが明らかになります。

于 2010-12-05T23:54:49.710 に答える