Python基础学习:怎么实现变量私有化
1、self__c真正实现了变量私有化
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : caodingzheng
'''
本篇主要讲变量私有化
'''
class Hidden_Variables(object):
def __init__(self):
self.a = 1
self._b = 2
self.__c = 3
def one(self):
print(self.a + self._b + self.__c)
return self.a + self._b + self.__c
def get_c(self):
return self.__c
def updata_c(self, value):
self.__c = value
print('变量c的值已被修改,c的值为%d' % (self.__c))
h = Hidden_Variables()
h.one()
'''
6
'''
h.a = 2
h.one()
''' 类的变量a被改变,结果为1
7
'''
j = Hidden_Variables()
j.one()
'''
6
'''
print(j._b)
'''值被打印出来
2
'''
j._b = 10
print(j._b)
j.one()
'''虽然变量被隐藏了,但还是可以被更改
14
'''
k = Hidden_Variables()
k.one()
'''
6
'''
# print(k.__c)
'''未能获取到c的值,变量c被私有化隐藏起来
Traceback (most recent call last):
File "D:/test/PycharmProjects/untitled/test/hidden_variables.py", line 51, in <module>
print(k.__c)
AttributeError: 'Hidden_Variables' object has no attribute '__c'
'''
k.__c = 11
print(k.__c)
print(type(k.__c))
'''这个时候k.__c是一个特殊变量,是一个int类型,这里的k.__c是一个整体,k不是实例化的k = Hidden_Variables()
<class 'int'>
'''
k.one()
'''这个时候我虽然看似给c重新赋了值,但是值未曾生效
6
'''
l = Hidden_Variables()
l.one()
'''
6
'''
print(l.get_c())
'''
3
'''
l.updata_c(20)
'''
变量c的值已被修改,c的值为20
'''
print(l.get_c())
'''
20
'''
l.one()
'''
23
'''