範囲
Java を学習した学生は皆、Java クラスでパブリック (パブリック) またはプライベート (プライベート) のメソッドとプロパティを定義できることを知っています。これは主に、一部の関数とプロパティが他の人によって使用されたり、内部使用のみに使用されたりすることを期待しているためです。 Python のモジュールについて学ぶと、実際には Java のクラスに似ていることがわかります。では、モジュール内で、一部の関数と変数が他の関数で使用され、一部の関数と変数がモジュール内でのみ使用されることをどのように理解すればよいでしょうか?
Python では、これは _ プレフィックスによって実現されます。通常の関数名と変数名はパブリックであり、abc、ni12、PI などのように直接参照できます。__xxx__ のような変数は特殊変数であり、直接参照できますが、上記のような特別な目的があります。__name__ は__author__ も特殊変数であり、作成者を示すために使用されます。通常、このタイプの変数名は独自の変数には使用しないことに注意してください。_xxx や __xxx のような関数や変数はプライベートであり、_abc、__abc などのように直接参照すべきではありません。
注意してください。これはすべきではない、できないということです。ただし、Python にはプライベート関数または変数へのアクセスを完全に制限する方法はないため、プログラミング習慣からプライベート関数または変数を参照すべきではありません。
例:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- def _diamond_vip(lv): print('尊敬的钻石会员用户,您好') vip_name = 'DiamondVIP' + str(lv) return vip_name def _gold_vip(lv): print('尊敬的黄金会员用户,您好') vip_name = 'GoldVIP' + str(lv) return vip_name def vip_lv_name(lv): if lv == 1: print(_gold_vip(lv)) elif lv == 2: print(_diamond_vip(lv)) vip_lv_name(2)
出力結果:
尊敬的钻石会员用户,您好 DiamondVIP2
このモジュールでは、vip_lv_name メソッド関数を公開しますが、他の内部ロジックはそれぞれ _diamond_vip と _gold_vip プライベートに実装されています。この関数は内部実装ロジックであるため、呼び出し元はこの関数メソッドをまったく気にする必要はありません。vip_lv_name を呼び出すメソッド関数だけを気にする必要があるため、private の使用はコードのカプセル化と抽象メソッドとして非常に便利です。 .
一般 この場合、外部から参照する必要のない関数はすべてprivateとして定義し、外部から参照する必要がある関数のみpublicとして定義します。