Python中的protected属性

Protected attributes in Python

本问题已经有最佳答案,请猛点这里访问。

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

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

因此,在我的类中有一个名为_name的受保护属性,但我仍然可以这样调用该属性:

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

为什么?不应该保护受保护的属性不受类或子类外部直接访问的保护吗?


@Coldspeed说得对。如果希望python将"mangling"应用于名称,则需要一个以双下划线开头的名称:它基本上会更改变量名,使其无法从外部访问。

看这里,这是官方的python文档

不要伪造这是Python,非Java。