简单介绍python封装的基本知识


Posted in Python onAugust 10, 2019

python封装简介

1.效果图:

对比一:

简单介绍python封装的基本知识

对比二:

简单介绍python封装的基本知识

2.学习来源代码:

# 封装是面向对象的三大特性之一
# 封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法
# 如何隐藏一个对象中的属性?
#  - 将对象的属性名,修改为一个外部不知道的名字
# 如何获取(修改)对象中的属性?
#  - 需要提供一个getter和setter方法使外部可以访问到属性
#  - getter 获取对象中的指定属性(get_属性名)
#  - setter 用来设置对象的指定属性(set_属性名)
# 使用封装,确实增加了类的定义的复杂程度,但是它也确保了数据的安全性
#  1.隐藏了属性名,使调用者无法随意的修改对象中的属性
#  2.增加了getter和setter方法,很好的控制的属性是否是只读的
#    如果希望属性是只读的,则可以直接去掉setter方法
#    如果希望属性不能被外部访问,则可以直接去掉getter方法
#  3.使用setter方法设置属性,可以增加数据的验证,确保数据的值是正确的
#  4.使用getter方法获取属性,使用setter方法设置属性
#    可以在读取属性和修改属性的同时做一些其他的处理
#  5.使用getter方法可以表示一些计算的属性

class Dog:
  '''
    表示狗的类
  '''
  def __init__(self , name , age):
    self.hidden_name = name
    self.hidden_age = age
  def say_hello(self):
    print('大家好,我是 %s'%self.hidden_name) 
  def get_name(self):
    '''
      get_name()用来获取对象的name属性
    '''  
    # print('用户读取了属性')
    return self.hidden_name
  def set_name(self , name):
    # print('用户修改了属性')
    self.hidden_name = name
  def get_age(self):
    return self.hidden_age
  def set_age(self , age):
    if age > 0 :
      self.hidden_age = age  
d = Dog('旺财',8)
# d.say_hello()
# 调用setter来修改name属性 
d.set_name('小黑')
d.set_age(-10)
# d.say_hello()
print(d.get_age())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python抓取京东图书评论数据
Aug 31 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
python numpy中cumsum的用法详解
Oct 17 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
如何在mac下配置python虚拟环境
Jul 06 Python
Python实现播放和录制声音的功能
Aug 12 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
Python识别处理照片中的条形码
Nov 16 Python
Python如何telnet到网络设备
Feb 18 Python
Python操作CSV格式文件的方法大全
Jul 15 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
Aug 09 #Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 #Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 #Python
基于python二叉树的构造和打印例子
Aug 09 #Python
Python re 模块findall() 函数返回值展现方式解析
Aug 09 #Python
Django ORM 自定义 char 类型字段解析
Aug 09 #Python
解决使用export_graphviz可视化树报错的问题
Aug 09 #Python
You might like
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
校园奶茶店创业计划书
2014/01/23 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android
Hive日期格式转换方法总结
2022/06/25 数据库