Django のソース コードを読んで、この関数を見つけました。ブロックタグの実装です。
私が興味を持っているのは、クラス インスタンスの外側__loaded_blocks
から先頭に 2 つのアンダースコア ( ) を持つ変数を設定していることです(パーサーはParser クラスのインスタンスです)。Django ソース コードの簡単な grep は、文字列がここでのみ発生することを示しています。parser
loaded_blocks
Python の name-mangling 機能の使用については、これまで考えたことがありませんでしたが、これにより、 の__loaded_blocks
属性がparser
それ自体から実質的に隠蔽されます。メソッドからこの属性を読み取るにparser
は、 に頼る必要がありますgetattr(self, "__loaded_blocks")
。
これは、選択した属性名の意図しない未使用の副作用にすぎないと考えるのは正しいですか? それとも、これにはもっと深い目的がありますか?
一般的に、なぜそのようなことをしたいのですか?
編集:__loaded_blocks
明確にするために、のメソッドから属性にアクセスしようとしない限り、parser
他の属性と同じように機能し、実際にはマングルされた属性ではないことを十分に認識しています。