Python中受保护的属性

时间:2017-07-05 18:19:10

标签: python python-2.7 python-3.x

假设我的模块中有这个类:

class Person:
    def __init__(self, name):
        self._name = name

所以我在班上有一个名为_name的受保护属性,但我仍然能够像这样调用这个属性:

p = Person('Felipe')
print(p._name)

为什么呢?是否应该保护受保护的属性不受其类或子类之外的直接访问的影响?

1 个答案:

答案 0 :(得分:1)

@coldspeed做对了。 如果你想让Python应用" mangling"你需要一个以双下划线开头的名字。 to names:它基本上改变了变量名,使其无法从外部访问。

请参阅here,这是官方的python doc

并且不要伪造这是Python,非Java。