Pythonプライベート関数のインスタンスの詳細

1759 ワード

Pythonプライベート関数のインスタンスの詳細
ほとんどの言語と同様に、Pythonにもプライベートな概念があります.
•プライベート関数はモジュールの外から呼び出すことはできません•プライベートクラスメソッドはクラスの外から呼び出すことはできません•プライベート属性はクラスの外からアクセスすることはできません
ほとんどの言語とは異なり、Python関数、メソッド、または属性がプライベートかパブリックかは、その名前に依存します.
Python関数、クラスメソッド、または属性の名前が2つの下線で始まる場合(終了ではありません)、プライベートです.他のすべては公有です.
Pythonにはクラスメソッド保護の概念はありません(独自のクラスとサブクラスでのみ使用できます).クラスメソッドまたはプライベート(独自のクラスでのみ使用可能)またはパブリック(どこでも使用可能)です.
MP 3 FileInfoでは、2つの方法があります.parseと_setitem__.すでに議論したようにsetitem__ 独自の方法です.通常、直接呼び出すのではなく、クラスで辞書構文を使用して呼び出すことができますが、公有であり、本当に良い理由があれば、直接呼び出すことができます(fileinfoモジュールの外からでも).しかし、_parseはプライベートです.名前の前に下線が2つあるからです.
Note: Method Naming C onventions
Pythonでは、すべての専用メソッド(例えば__setitem_)と組み込み属性(像__doc_)標準的な命名習慣を守ります.開始と終了には下線が2つあります.自分の方法と属性にこの方法で名前をつけないでください.最後には、あなた(または他の人)を混乱させるだけです.
1.プライベートメソッドの呼び出しを試みる

>>> import fileinfo 
>>> m = fileinfo.MP3FileInfo() 
>>> m.__parse("/music/_singles/kairo.mp3") (1) 
Traceback (innermost last): 
 File "", line 1, in ? 
AttributeError: 'MP3FileInfo' instance has no attribute '__parse' 

(1)プライベートメソッドを呼び出そうとすると、Pythonはいくつかの誤導的な異常を引き起こし、そのメソッドは存在しないと主張します.もちろん存在しますが、プライベートなのでクラス外では使用できません.厳密には、プライベートメソッドはクラス外でアクセスできますが、処理は容易ではありません.Pythonでは本当にプライベートなものは何もありません.内部では、プライベートメソッドと属性の名前が突然変更され、復元され、与えられた名前では使用できないように見えます.あなたは通過することができますMP3FileInfo__parseの名前はMP 3 FileInfoクラスの__を使いますparseメソッド.この方法が面白いことを知ってから、本当のコードでは絶対に使用しないことを保証します.
私有方法は何らかの理由で私有であるが,Pythonにおける他の多くのもののように,それらの私有化は基本的に強制的ではなく習慣的な問題である.
本文を通じてみんながPythonの私有関数の使用を理解することができることを望んで、もし疑問があれば伝言あるいは当駅のコミュニティに行って討論を交流してもらって、読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!