如何控制对"类和对象数据属性和函数属性"的访问

总述

"""

    分为隐藏属性和开放接口


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()

 

 

posted @ 2021-12-04 08:54  tslam  阅读(31)  评论(0编辑  收藏  举报