当前位置: 首页 > news >正文

面向对象的三大特性之封装

封装

'''
封装: 对外隐藏类中一些属性与方法的实现细节

优点:外界不能直接访问,让内部的属性与方法具有安全保障
'''

class A:
   # 类的属性:__开头的属性,在外界不能通过 cord | __cord 直接访问:对外隐藏了
   __cord = '01012300'

   # 类的方法:__开头的方法,在外界不能通过 get_money | __get_money 直接访问:对外隐藏了
   @classmethod
   def __get_money(cls):
       print('输入密码,取出100w零花钱')
   
   # 对象的方法:一般的实现需求都是,这些方法只在内部使用
   def __test(self):
       pass
   
   # 对象的属性:封装目的
   # 1.对象的属性值一般都来源于外界,外界是有权力再次访问的
   # 2.封装的目的不是让外界无法访问,而且不让其直接访问,可以在完成安全处理后再访问
   # 3.如何做到外界还是通过变量名来对属性进行取值赋值,但是是走的方法间接拿到的值
   #       -- __money被封装,外界还是可以通过 对象.money 取值赋值
   def __init__(self, money)
      self.__money = money
       
   # 取值
   @property  # 在外界可以 对象.money 进行取值
   def money(self):
       # print('走方法拿到的money')
       return self.__money

   # 赋值
   @money.setter  # 在外界可以 对象.money = 新值 进行赋值
   def money(self, money):
       self.__money = money

   # 删除
   @money.deleter
   def money(self):
       del self.__money
# 重点:
# 1.封装的语法与原理
# 2.封装的目的
# 3.对象属性的封装对外提供操作接口的手段

转载于:https://www.cnblogs.com/tyler-bog/p/10850899.html

相关文章:

  • 数据结构:自定义数组队列
  • 异或的性质及运用
  • 20175215 2018-2019-2 第八周java课程学习总结
  • 我的java问题排查工具单
  • 记录一个pom文件
  • 2.4 hive创建表实例讲解
  • Cookie Session和自定义分页
  • SSM框架的优势?
  • 获得小黄衫有感
  • Hello2 Analysis
  • exe4j 使用记录(二):jar打包exe
  • ModBus-RTU详解
  • 冲刺进度条-2
  • Solr中的group与facet的区别
  • hashlib 模块:加密
  • Android Studio:GIT提交项目到远程仓库
  • dva中组件的懒加载
  • Js基础知识(四) - js运行原理与机制
  • nginx 负载服务器优化
  • 创建一个Struts2项目maven 方式
  • 二维平面内的碰撞检测【一】
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 使用Swoole加速Laravel(正式环境中)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 我这样减少了26.5M Java内存!
  • linux 淘宝开源监控工具tsar
  • 如何在招聘中考核.NET架构师
  • # 数据结构
  • (03)光刻——半导体电路的绘制
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (十八)三元表达式和列表解析
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (一)为什么要选择C++
  • (转)socket Aio demo
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .Net7 环境安装配置
  • .Net接口调试与案例
  • .NET性能优化(文摘)
  • .pop ----remove 删除
  • @javax.ws.rs Webservice注解
  • [20160807][系统设计的三次迭代]
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [Angular 基础] - 指令(directives)
  • [C++]指针与结构体
  • [docker]docker网络-直接路由模式
  • [EWS]查找 文件夹
  • [github配置] 远程访问仓库以及问题解决
  • [HNOI2018]排列
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [Jquery] 实现温度计动画效果
  • [LeetCode] Wildcard Matching