Python的私有变量

私有变量该如何访问

Posted by mengxun on October 7, 2018

私有变量

先定义一个类:

class User:
	def __init__(self, name, age):
		self.name = name
		self.__age = age

然后实例化并取属性:

>>> u1 = User("Alen", 12)
>>> u1.name
'Alen'
>>> u1.__age
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-24-832aa11c12d0> in <module>()
----> 1 u1.__age

AttributeError: 'User' object has no attribute '__age'

很显然,__age这个属性是没办法访问的。因为在变量或者方法前面加上__,这个变量或者方法就变为私有的了,无法被外界直接访问。不过,其实还有别的方法可以访问到

访问

查看一下u1对象下面的属性:

>>> u1.__dict__
{'_User__age': 12, 'name': 'Alen'}

其实,无论是私有变量还是私有方法,都会被重命名为_<class>__<name>的形式。通过这种形式是可以访问到私有变量或者方法的。

>>>  u1._User__age
12