「これはプライベートとパブリックの一般的な考え方に反しているように見えることはわかっています」実際には「反対」ではなく、C++やJavaとは異なるだけです。
プライベート -- C++ および Java で実装されているように、あまり有用な概念ではありません。実装の詳細を分離すると役立つ場合があります。しかし、それは使いすぎです。
2 で始まる Python の名前__
は特別であり、通常、このような名前で属性を定義するべきではありません。を含む名前__
は特別で、実装の一部です。そしてあなたの使用のために公開されます。
1 で始まる名前_
は「プライベート」です。時々、それらは少し隠されています。ほとんどの場合、「同意する大人」の規則が適用されます。愚かに使用しないでください。通知なしに変更される可能性があります。
"private" は引用符で囲みます。これは、あなたとユーザーとの間の単なる合意に過ぎないからです。でマークを付けました_
。ユーザー (およびあなた自身) はそれを尊重する必要があります。
多くの場合、メソッド関数名には、_
それらが「プライベート」であり、予告なしに変更される可能性があると見なされていることを示す先頭の付いたものがあります。
Java が必要とする無限のゲッターとセッターは、Python ではあまり使用されていません。Python のイントロスペクションはより柔軟で、オブジェクトの属性値の内部ディクショナリにアクセスでき、 や などのファースト クラスの関数がありgetattr()
ますsetattr()
。
さらに、property()
ゲッターとセッターを単純な属性のように振る舞う単一の名前にバインドするためによく使用される関数がありますが、実際には明確に定義されたメソッド関数呼び出しです。