简单介绍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 encode和decode的妙用
Sep 02 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
python自动下载图片的方法示例
Mar 25 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
Python3如何使用tabulate打印数据
Sep 25 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
教你如何用python开发一款数字推盘小游戏
Apr 14 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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
学习php中的正则表达式
2014/08/17 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
如何实现JS函数的重载
2006/09/22 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
JS模板实现方法
2013/04/03 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
jQuery获取动态生成的元素示例
2014/06/15 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
实例讲解React 组件
2020/07/07 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
业务员岗位职责
2013/11/16 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
父亲节寄语大全
2015/02/27 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
Go语言入门exec的基本使用
2022/05/20 Golang
Redis入门基础常用操作命令整理
2022/06/01 Redis
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技