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的原因。但是在最后的打印语句中,需要使用类名来访问password,因为私有成员的范围仅限于Employee类。
数据隐藏的优点
- 通过封装重要数据来增强安全性。
- 通过将类中的对象与无用数据断开连接,隐藏不相关的信息。
- 防止创建指向错误数据的链接。