python类的公有和私有

结论:python里并没有严格的私有变量和函数限制,仅仅是对程序员的限制,尽量不要去使用

(1)_xxx "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问
(2)__xxx 类中的私有变量/方法名 " 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
(3)__x__ 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 __init__()代表类的构造函数。

class test:
	def __init__(self, a):
		self.__a = a
	def __get():
		return self.__a

python里的私有变量和私有方法都以双下划线开头

d.__a
Traceback (most recent call last):
  File "", line 1, in <module>
    d.__a
AttributeError: 'test' object has no attribute '__a'
d.__geta()
Traceback (most recent call last):
  File "", line 1, in <module>
    d.__geta()
AttributeError: 'test' object has no attribute '__geta'. Did you mean: '__ge__'?

如果想要直接访问私有变量和私有函数,解释器会报错说类里没有这个属性

但是python的私有其实是伪私有,其实是python的名字改装在起作用,在类外访问类里的私有元素,变量和方法会被改名,加上_<类名>即可访问私有变量和私有方法

d._test__a
1
d._test__geta()
1

你可能感兴趣的:(python)