如何控制对"类和对象数据属性和函数属性"的访问
总述
""" 分为隐藏属性和开放接口 1 如何隐藏属性 在属性(数据属性和函数属性)前添加双下短下划线 2 为什么要隐藏 限制类外部对数据直接操作(但可以通过 "_类名__属性名"的方式访问) 3 如何访问隐藏属性 在类内部: 是可以直接访问双下划线开头的属性的(即对内不隐藏,对外隐藏) 在外部: 1 通过 "_类名__属性名"的方式访问 2 提供相应接口-(可以附加额外逻辑对数据进行严格控制) """
# 1 隐藏数据属性和开放接口
# class Student(): # # school = 'BJ' # def __init__(self, name, age): # self.__name = name # 将名字隐藏起来 # self.__age = age # 将年龄隐藏起来 # def tell_info(self): # 给外部提供访问学生信息的接口 # print('name:%s, age:%s' % (self.__name, self.__age)) # def set_info(self, name, age): # 对外提供设置学生信息(该和增)的接口,并附加类型检查的逻辑 # if not isinstance(name, str): # raise TypeError('名字不是字符串') # if not isinstance(age, int): # raise TypeError('年龄不是整型') # self.__name = name # self.__age = age # # stu1 = Student('jack', 18) # stu1.set_info('tom', 10) # stu1.tell_info()
# 2 隐藏函数属性和开放函数接口
# class Teacher(): # school = 'bj' # def __init__(self, name, course): # self.name = name # self.course = course # def __tell_info(self): # print('%s教%s' % (self.name, self.course)) # def get_info(self): # return self.__tell_info() # # t = Teacher('lili','art') # t._Teacher__tell_info() # lili教art # t.get_info()