9

私は今、自分でPythonクラスを学んでいて、このページに出くわしました:

http://www.tutorialspoint.com/python/python_classes_objects.htm

変数empCountは、このクラスのすべてのインスタンス間で値が共有されるクラス変数です。Employee.empCountこれは、クラス内またはクラス外からアクセスできます 。

これはパブリック変数と呼ばれていると思いますか?それとも静的パブリック変数ですか?

これは技術的に優れた方法ですか? 私はこの質問が少し柔らかいことを知っていますが、一般的に言えば、self.var (init または何かで宣言されている) のようなクラス変数と、このようなパブリック変数を使用する方が良いのはいつですか?

4

2 に答える 2

7

これをクラス属性と呼びます。Python は公開と非公開を区別しません。プライバシーは慣習によってのみ示され、強制されません。

インスタンス間でデータを共有する必要がある場合は、技術的に優れた方法です。メソッドもクラス属性であることを忘れないでください。

于 2013-05-12T17:46:40.330 に答える
2

違いは、変数がコンストラクター内で宣言されている場合、変数は__init__クラス変数ごとに異なることです。(つまり) クラスに 2 つのオブジェクトがある場合、それぞれがこの変数用に異なるメモリ空間を持ちます。このように宣言するとempcount、同じメモリ空間がクラスのすべてのオブジェクトによって共有またはアクセスされます。この場合、オブジェクトが作成されるたびに empcount の値が 1 ずつ増えます。そのため、変数をすべてのオブジェクトで共有する場合は、この種の static 宣言を使用します。ただし、この変数を変更すると、クラスのすべてのオブジェクトに影響します。

于 2013-05-12T17:45:26.223 に答える