Python 中的数据隐藏


数据隐藏也称为数据封装,它是向用户隐藏应用程序特定部分实现的过程。数据隐藏结合了类的成员,从而限制了对类成员的直接访问。

数据隐藏在使应用程序更安全和更健壮方面发挥着重要作用。

Python 中的数据隐藏

Python 中的数据隐藏是一种技术,用于防止在类中初始化的方法和变量被类外部直接访问。隐藏必要的成员函数可以防止最终用户查看程序的实现,从而提高安全性。使用数据隐藏还有助于通过减少相互依赖关系来降低程序的复杂性。

在 Python 中,可以通过将类成员声明为私有来实现数据隐藏,方法是在成员名称前加上双下划线 (__) 作为前缀。

语法

在 Python 中隐藏数据的语法如下:

__variablename

示例 1 - 无类名

在此示例中,数据隐藏是通过将类中的变量声明为私有来执行的:

class hidden: # declaring private member of class __hiddenVar = 0 def sum(self, counter): self.__hiddenVar += counter print (self.__hiddenVar) hiddenobj = hidden() hiddenobj.sum(5) hiddenobj.sum(10) # print statement throws error as __hiddenVar is private print(hiddenobj.__hiddenVar)

输出

以上代码的输出如下:

5
15
Traceback (most recent call last):
  File "main.py", line 12, in <module>
    print(hiddenobj.__hiddenVar)
AttributeError: 'hidden' object has no attribute '__hiddenVar'

示例 2 - 有类名

在以下示例中,隐藏的数据可以直接在类外部访问:

class hidden: # declaring hiddenVar private by using __ __hiddenVar = 0 def sum(self, counter): self.__hiddenVar += counter print (self.__hiddenVar) hiddenobj = hidden() hiddenobj.sum(5) hiddenobj.sum(10) # adding class name before variable to access the variable outside the class print(hiddenobj._hidden__hiddenVar)

输出

以上代码的输出如下 

5
15
15

示例 3

让我们再看一个使用类的私有和受保护成员来实现数据隐藏的示例。

class Employee: # Hidden members of the class __password = 'private12345' # Private member _id = '12345' # Protected member def Details(self): print("ID: ",(self._id)) print("Password: ",(self.__password)+"\n") hidden = Employee() hidden.Details() print(hidden._Employee__password)

输出

以上代码的输出为:

ID: 12345
Password: private12345
private12345

在以上输出中,Details 函数是 Employee 类的组成部分,因此它可以访问类的私有和受保护成员。这就是为什么可以在不使用类名的情况下访问 id 和 password 的原因。但是,在最后的 print 语句中,需要使用类名来访问 password,因为私有成员的作用域限制在 Employee 类内部。

数据隐藏的优点

  • 通过封装重要数据来增强安全性。
  • 通过将类内的对象与无用数据断开连接,向最终用户隐藏不相关的信息。
  • 防止创建指向错误数据的链接。

更新于: 2022年8月18日

5K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告