一、私有化
封装:
1、私有化属性
2、定义公有set和get方法
__属性:就是将属性私有化,访问范围仅仅限于类中
二、好处
1、隐藏属性不被外界随意修改
2、也可以修改,通过函数setXXX
3、如果想获取具体的某一个属性,使用getXXX函数,return值
class Student:
# __age = 19 # 类属性
def __init__(self,name,age):
self.__name = name
self.__age = age
self.__socre = 59
# 定义公有set和get方法
# set是为了赋值
def setAge(self,age):
if age > 0 and age <= 120:
self.__age = age
else:
print('年龄段不在规定范围内!')
# get是为了取值
def getAge(self):
return self.__age
def setName(self,name):
if len(name) == 6:
self.__name == name
else:
print('名字不是六位!')
def getName(self):
return self.__name
def __str__(self):
return '姓名:{},年龄:{},考试分数:{}'.format(self.__name,self.__age,self.__socre)
hh = Student('hh',18)
print(hh)
print(dir(hh))
print(__name__)
三、装饰器
步骤:
1、先有getXXX
2、再有setXXX,因为set依赖于get
class Student:
# __age = 19 # 类属性
def __init__(self,name,age):
self.__name = name
self.__age = age
self.__socre = 59
@property
def age(self):
return self.__age
# 再有set,因为set依赖get
@age.setter
def age(self,age):
if age > 0 and age <= 120:
self.__age = age
else:
print('年龄段不在规定范围内!')
def __str__(self):
return '姓名:{},年龄:{},考试分数:{}'.format(self.__name,self.__age,self.__socre)
hh = Student('hh',18)
#
# print(hh)
#
# print(dir(hh))
#
# print(__name__)
hh.age = 130
print(hh.age)