什么是班级私人名称?

时间:2017-02-12 12:37:44

标签: python python-3.x

Python的online documentation包含下面引用的说明 有人可以解释一下它的含义吗?

2.3.2. Reserved classes of identifiers

  

__*班级私人名称。此类别中的名称,在其中使用时   类定义的上下文,被重写为使用错误的   形式,以帮助避免基地的“私人”属性之间的名称冲突   和派生类。

1 个答案:

答案 0 :(得分:2)

每当在getattr内编写的代码使用以两个下划线开头但不以两个下划线结尾的名称时,编译器会将该名称替换为包含类名的错位表单:

{{1}}

这在实践中意味着当您创建子类时(如果子类具有与基类不同的名称),您将不会意外地与基类中使用的私有名称冲突。

它不是一种安全机制,因为您仍然可以访问私人'使用{{1}}的值,或者甚至只是名称的错位形式,并且它不是完美的保护,因为有时类层次结构同时具有相同名称的基类和派生类。