首页 > 其他分享 >Day28.为何要隐藏属性

Day28.为何要隐藏属性

时间:2024-06-19 17:56:59浏览次数:20  
标签:obj Day28 self name print 隐藏 属性

1.为何要隐藏属性

   为何要隐藏属性,代码:

# 2.为何要隐藏
print('为何要隐藏'.center(50,'-'))
# I、隐藏数据属性
# 将数据隐藏起来就限制了类外对数据的直接操作,然后类内应该提供相应的接口来允许类外部间接地操作数据,
# 接口之上可以附加额外的逻辑来对数据地操作进行严格地控制

# 设计者:egon
class People:
    # 先将名字隐藏
    def __init__(self, name):
        self.__name = name

    # 通过另外打开的接口访问名字,可以在单独的接口增加新的逻辑
    def get_name(self):
        # 通过该接口就可以间接地访问到名字属性
        print(self.__name)

    # 修改名称
    def set_name(self, val):
        # 新增逻辑
        if type(val) is not str:
            print('必须是字符串类型')
            return
        self.__name = val

# 使用者:alex
obj = People('egon')
# print(obj.name)     # alex无法直接用名字属性

print('传int类型'.center(50, '-'))
obj.set_name(1111)
obj.get_name()

print('传str类型'.center(50, '-'))
obj.set_name('EGON')
obj.get_name()

# II、隐藏函数/方法属性:目的是隔离复杂度,例如某些函数只能在某个类下使用

标签:obj,Day28,self,name,print,隐藏,属性
From: https://www.cnblogs.com/vless/p/18256894

相关文章

  • XAF 属性编辑器(PropertyEditor)- 原理篇
    前言随着DEV24.1.3的发布,XAFBlazor中的属性编辑器(PropertyEditor)也进行了很大的改动,在使用体验上也更接近WinForm了,由于进行了大量的封装,理解上没有WinForm直观,所以本文通过对属性编辑器的原理进行解析,并对比新旧版本中的变化,使大家能够对属性编辑器有一个更全面的认识。......
  • 【CMake】target属性
    1、INCLUDE_DIRECTORIES头文件搜索目录列表。除了可以使用target_include_directories命令修改头文件搜索目录以外,还可以直接使用set_property命令修改target的头文件搜索目录。target的INCLUDE_DIRECTORIES属性会使用目录的INCLUDE_DIRECTORIES属性初始化。可以使用include_di......
  • 在检视器Inspector中通过自定义属性实现显示中文名称
    在前人的基础上,整出来了一些完善一些的版本首先,在\Scripts下创建一个类CustomLabelAttribute usingSystem;usingUnityEngine;#ifUNITY_EDITOR[AttributeUsage(AttributeTargets.Field)]#endif///<summary>///使字段在Inspector中显示自定义的名称。///</summ......
  • 仿写Vue中的:style属性
    实现在html文件中,通过一下方式给元素添加style属性 <h3:style="fn">新的一天,打工仔加油</h3>1、定义好一个样式库(函数字典)2、window全局注册一个函数(高阶函数),该函数的参数为cb(回调函数1)和val(参数2,给cb使用)3、在cb回调函数中,进行相关处理<!DOCTYPEhtml><ht......
  • Day28.如何隐藏属性
    1.如何隐藏属性_隐藏属性的使用方法2.如何隐藏属性_隐藏属性的需要注意的问题'''二:将封装的属性进行隐藏操作'''#1.如何隐藏:在属性名前加__前缀,就会实现对外隐藏属性效果#该隐藏需要注意的问题:#Ⅰ:在类外部无法直接访问双下滑线开头的属性,但知道了类名和属性名可以......
  • Day28.课程对象定义与使用
    1.课程对象定义与使用_课程类和班级类关联 班级类,Class:'''班级'''classClass:#__init__中,初始化单个对象,记录每个班级独有的东西def__init__(self,class_name):self.class_name=class_name#初始班级时,班级没有课程表self.cla......
  • dataGridView 常用属性和方法
    ContextMenuStrip属性:当用户点击鼠标右键时(设置和contextMenuStrip挂钩)MultiSelect属性是否可以多行选择SelectionMode属性:设置选中方式,比如是否选中一整行(设置为FullRowSelect)Dock属性:设置显示位置AllowUserToAddRows属性:取消表格中末尾的空白Anchor属性:......
  • Day28.学校与班级建关联
    1.学校与班级建关联_班级类,将班级和班级对应的课程信息生成对象'''班级'''classClass:#__init__中,初始化单个对象,记录每个班级独有的东西def__init__(self,class_name):self.class_name=class_name#初始班级时,班级没有课程表self......
  • Python中的属性
        Python中的属性主要分为类属性,对象属性。1.类属性    类属性:类所有,所有的实例对象都能够共享,能通过类名和实力对象名访问,当当前的类属性被实例对象通过对象名.属性名的形式调用之后,当前对象就会多出一个实例属性,此后使用对象名.属性名的形式调用的就是对象属......
  • GPT-4o 只是对话式 Al 的冰山一角,背后隐藏了哪些新机会?(内含福利) | 编码人声
       「编码人声」是由「RTE开发者社区」策划的一档播客节目,关注行业发展变革、开发者职涯发展、技术突破以及创业创新,由开发者来分享开发者眼中的工作与生活。听友福利欢迎在小宇宙播客评论区留言,分享你对GPT-4o的看法,或者对最有潜力的对话式AI场景的预测。我们将抽出......