私有成员
作用: 当你在封装时,只需要向类外提供必要的功能,需要把外界不必要的隐藏掉(实现的细节)
语法: 命名使用双下划线开头(通过obj.__dict__查看,名称被修改为_类名__成员名)
class Wife:
'''演示对私有成员进行只读'''
def __init__(self,name):
self.name = name
self.__age = 25
#对私有成员进行读操作的方法
@property
def age(self):
return self.__age
w01 = Wife01('小乔')
w01.age = 18 #对他进行写操作会报错(因为被@property拦截了,显示can`t set attribute)
class Wife:
'''演示实现对私有成员进行读写'''
def __init__(self,name,age):
self.name = name
self.age = age
#对age进行读操作的方法
@property
def age(self):
return self.__age
#对age进行写操作的方法
@age.setter
def age(self,value):
if 25<=value<=30:
self.__age = value
else:
raise ValueError(’我不要')
w01 = Wife('甄宓',250)
print(w01.age)
print(w01.__dict__) #查看该类的所有属性,包括私有变量
print(w01.__wife__age) #访问私有变量(私有变量是障眼法,其实还是可以通过这种方式访问)