Pythonでは、OOPを使用するよう強制されません。 JavaやC#を使っているので、実際のメリットがない場合はクラスに入れる必要はありません。
IMHOに行くには、特にクラスのインスタンスをグループ化するだけでは最適な方法ではありません。代わりにそのものをモジュールに抽出することができます。これはインスタンスを必要とせず、インポートするだけです。そうすれば、それは分離されたファイルと名前空間にもあります。
例:
main.py
:
if __name__ == "__main__":
import sys
args = sys.argv[1:]
if len(args) != 2:
print("This script requires exactly two command-line arguments!")
exit(1)
import my_module
exit_code = my_module.run(args) or 0
exit(exit_code)
else:
raise ImportError("Run this file directly, don't import it!")
my_module.py
:
# initialization code to be run at import time goes here
def run(args):
# do whatever you need to do
print("Hello world!")
print("You said <", args[0], "> and <", args[1], ">."
# you may return an integer (1-255) as exit code if an error occurred,
# else the default exit code is 0 (successful; no error)
しかし、は究極の真実として、このアプローチを取ることはありません!それは私の個人的な意見ではありませんが、あるアプローチが適している状況と、他のアプローチが適している状況が常にあります。
また、これは主に設計に関する質問であり、プログラムの安定性や機能性には実質的な影響はありません。それは読みやすさを向上させるだけかもしれませんが、特に小さなスクリプトの場合、本当に何もしない多くのコードを追加するので、良いアプローチではありません。これは、いくつかのモジュールを持つ大きなプロジェクトがある場合にのみ役に立ちます。
ほんの小さなスクリプト(単一ファイルまたはごく少数のモジュール)の場合、必要なすべてのクラスと関数を上に定義し、標準if __name__ == "__main__"
をエントリポイントとして使用することをお勧めします。
私はhttps://programmers.stackexchange.com/で尋ねることをお勧めしますが、一般的に、私はその技術に関する特定の問題を知らない。 – cxw
Pythonは、あなたのようなOOPを使用するよう強制しません。 JavaやC#を使っているので、実際のメリットがない場合はクラスに入れる必要はありません。特にグループ化するだけのクラスインスタンスを作成することは、IMHOに行く最良の方法ではありません。代わりにモジュールにそのようなものを抽出することができます。これはインスタンスを必要とせず、インポートするだけです。そうすれば、それは分離されたファイルと名前空間にもあります。 –
また、 'if __name__ ...'行のインデントが間違っています。外側のレベルでなければなりません。おそらくタイプミスでしょうか? –