数据隐藏在 Python 类中如何运作?


数据隐藏

在 Python 中,我们在属性名前使用双下划线,以使它们不可访问/私有或隐藏它们。

以下代码显示了变量 __hiddenVar 如何被隐藏。

示例

class MyClass:
    __hiddenVar = 0
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject.__hiddenVar)

输出 

3
Traceback (most recent call last):
11
  File "C:/Users/TutorialsPoint1/~_1.py", line 12, in <module>
    print (myObject.__hiddenVar)
AttributeError: MyClass instance has no attribute '__hiddenVar'

在以上程序中,我们尝试在类外使用对象访问隐藏变量,这会引发异常。

我们可以使用如下特殊语法访问隐藏的属性值:

示例

class MyClass:
    __hiddenVar = 12
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject._MyClass__hiddenVar)

输出 

15
23
23

虽然可以从类外访问私有方法,但不像普通情况下那么容易。在 Python 中,没有什么是真正私有的;私有方法和属性的名称会在运行时被破坏和复原,以使其无法通过给定名称来访问它们。

更新于: 15-6-2020

3K+ 查看次数

开启你的职业生涯

完成此课程以获得认证

入门
广告
© . All rights reserved.