继续整理python------私有化

104 阅读1分钟

一、私有化

封装:

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)