-2

私はPythonの初心者プログラマーで、Pythonのクラスの使用法について考えています。スクリプト内のすべての関数をインポートすることは可能ですが、クラス構造を使用するために直面​​する状況は何でしょうか。私を啓発するpythonの達人はいますか?

したがって、例として、コードをオブジェクト指向構造に構成することをお勧めしますが、クラス内の関数のコレクションもスクリプト ファイル (python の専門用語で推測するモジュール) にコーディングすることができ、任意の呼び出し元からそれらの関数をインポートできます。クラスを拡張する代わりにモジュール。クラスを利用するということは、クラス階層の整合性を考慮することも含まれますので、プレーンなモジュールを利用する方が開発時間のコストを考えると良いと思います。それは本当ですか、それとも何かが欠けていますか?

関数のモジュールではなく、クラスによって実行できないことはありますか?

4

2 に答える 2

1

オブジェクト指向プログラミングには、単なる関数とは異なるものがたくさんあります。

継承などがありますが、私が気づいた唯一の 2 つの利点は、カプセル化と情報共有です。同じコインの裏表。

ウィキペディアのカプセル化

私が知っている一般的な情報共有についての適切な説明はありません。私にとっては、データを 1 つのセットにまとめて、受け渡して操作できる方が簡単な場合があります。データとしてのプロパティ、メソッド、継承、およびオブジェクトはすべて、情報共有の一部です。関数では、通常、情報共有のために取得できるのは、関数の引数、グローバル、および戻り値だけです。Python の場合、まったく別のトピックである関数デコレータもあります。デコレータを実行できる言語は他にもありますが、Python では特別です。

考えられる 3 番目の利点は、分類です。1 つのクラスのメソッドとプロパティは、そのクラスが表すカテゴリに適合できます。モジュールと関数でそれを得ることができますが、クラスは追加のレベルの抽象化を提供し、前述の利点があります。

于 2013-05-12T21:21:55.977 に答える
0

Python では必須ではありませんが、プログラミング リソースを大幅に強化する可能性があるオブジェクト指向アプローチを採用するかどうかによって異なります。

クラスを使用 (およびインポート) すると、クラスを継承してインスタンス化し、プログラムに追加するクラスとオブジェクトをさらに作成できます。

関数 func1 と func2 を含む module1 を作成し、module1 をインポートして module1.func1() と module1.func2() を呼び出すことができます。クラスを拡張していません。

クラス class1 を含む module2 を記述し、class1 でメソッド func1 および func2 を定義できます。module2 をインポートするときは、オブジェクトを作成する必要があります

obj1 = module2.class1()

メソッド obj1.func1() および obj1.func2() を呼び出します。これが OO アプローチになります。

両方のアプローチのいずれかで問題を解決できると思います

于 2013-05-12T21:02:07.127 に答える