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 类内部。
数据隐藏的优点
- 通过封装重要数据来增强安全性。
- 通过将类内的对象与无用数据断开连接,向最终用户隐藏不相关的信息。
- 防止创建指向错误数据的链接。
广告