重複の可能性:
Python でのプライベート名マングリングの利点は何ですか?
Python で遊んでいるときに、ifclass
またはinstance
variable-name が 2 つのアンダースコアで始まる場合、名前の前に「_」が付くように名前が変更されることがわかりました。
例えば
class Test(object):
__attribute = "dunderscored"
def __init__(self, value=0):
self.__instance_attribute = value
test_instance = Test()
次に、両方の変数の名前が次のように変更されます
test_instance._Test__attribute
とtest_instance._Test__instance_attribute
なぜそのような動作/機能があるのですか? その必要性、またはそれを意図した特別な用途はありますか?
さまざまなクラスに一般的な名前の属性がある場合のユースケースを考えることができます。値、id、メンバーは共通ですが、一部の関数/メソッドについては、これらのクラスの 1 つだけを期待/想定しています。この場合、型チェックが行われていない可能性があり、別のクラス インスタンスが渡されたときに (おそらく誤って) エラーや望ましくない動作が発生する可能性があります。
しかし、この使用例を除けば、この特別な動作の利点は見当たりません。この動作は機能のように見えますが、かなり基本的なものであり、ここで何かが欠けているように感じます。それが機能である場合、それは何に使用されますか?典型的なユースケースはありますか?