视频地址:http://www.56.com/u88/v_OTM5NjU0MjE.html#fromoutpvid=OTM5NjU0MjE

普及网络安全知识,推动信息技术发展。

为祖国的网络安全撑起一片蓝天,为网络安全爱好者构建一方家园。

欢迎来到灰帽程序员论坛,我们的网址是:http://www.hmhacker.org

论坛是以技术交流为主(非商业性质论坛,不从事任何非法入侵活动)

分享知识,分享快乐,收获友谊,收获财富!

大家好,我是数字雨,QQ:798033502

今天给大家带来的教程是《Python编程系列教程第13讲——隐藏数据和封装》

我们看下面这样的一个小例子。

假设:

0-10度为冰水

11-20度为凉水

21-60度为温水

61-90度为热水

91-100度为开水

__author__ = 'MXi4oyu'

class  Heatupwater:   #定义一个烧水的类,类名首字母大写

def __init__(self):   #初始化水温是15度

self.temperature=15

self.level="凉水"

def heatup(self):

self.temperature+=10

def setlevel(self):

if(self.temperature>=0 and self.temperature<=10):

self.level="冰水"

elif(self.temperature>10 and self.temperature<=20):

self.level="凉水"

elif(self.temperature>20 and self.temperature<=60):

self.level="温水"

elif(self.temperature>60 and self.temperature<=90):

self.level="热水"

else:

self.level="开水"

def waterinfo(self):

self.setlevel()

print(self.level+":"+str(self.temperature)+"℃")

if __name__=='__main__':

h1=Heatupwater()

h1.heatup()

h1.waterinfo()

for i in range(4):

h1.heatup()

h1.waterinfo()

h1.temperature=0

h1.waterinfo()

你可能已经意识到了,查看或修改对象中的属性有两种方法。

一种是直接给属性赋值,例如:mywater.temprature=56

另一种是使用我们定义的heatup方法。那么直接跟给temprature赋值是不合理的,比如我们将水烧到89度,突然赋值为0度,这是不合理的。我们不想让temprature属性被外界直接赋值,我们想要的效果是只有当调用heatup方法时水温才会变化。为了达到这样的效果,我们通常使用私有属性把数据隐藏起来。

面向对象的三大特性是封装、继承和多态,封装概念的核心是:对象内部数据不应该从公共接口直接访问,如果对象用户想要改变对象的状态,就要使用访问方法和修饰方法。

Property()装饰器函数是一个内置函数,至多可接受4个参数,一个获取者函数,一个设置者函数,一个删除者函数,一个docstring。

使用@property的效果与仅使用一个参数(获取者函数)调用property()函数的效果是一样的。

def name(self):

return self__name

name=property(name)

但是简便起见,我们通常是用@property装饰器来修饰。

下面简单的封装下People类。

__author__ = 'MXi4oyu'

#!/usr/bin/python

#coding=utf-8

class People():

def __init__(self):

self.__name='jack'

@property

def name(self):

return self.__name

@name.setter

def name(self,value):

#我们通过这种方式就可以对name属性的值进行限定

if not isinstance(value,str):

raise TypeError("姓名必须为字符串")

else:

self.__name=value.title()

if __name__=='__main__':

p1=People()

p1.name="jack"

print(p1.name)

转载于:https://www.cnblogs.com/secbook/p/3190864.html

Python编程系列教程第13讲——隐藏数据和封装相关推荐

  1. Python编程系列教程第12讲——属性和方法

    视频地址:http://v.youku.com/v_show/id_XNTgyOTg4NjQ4.html 普及网络安全知识,推动信息技术发展. 为祖国的网络安全撑起一片蓝天,为网络安全爱好者构建一方家 ...

  2. Python编程系列教程第16讲——拷贝自身到系统目录

    分享知识,分享快乐,收获友谊,收获财富! 大家好,我是数字雨,QQ:798033502 http://itbook.taobao.com/ 今天给大家带来的教程是<Python编程系列教程第16 ...

  3. python编程入门教程第6讲_Python开发的入门教程(六)-函数

    介绍 本文主要介绍Python中函数的基本知识和使用 Python之什么是函数 我们知道圆的面积计算公式为: S = πr² 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同 ...

  4. python爬取图片教程-推荐|Python 爬虫系列教程一爬取批量百度图片

    Python 爬虫系列教程一爬取批量百度图片https://blog.csdn.net/qq_40774175/article/details/81273198# -*- coding: utf-8 ...

  5. python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版

    Python编程入门经典pdf(Python编程入门教程)下载.Python编程入门经典pdf高清版帮助各位更好的进行Python编程的学习以及理解,最经典的课题,最深入的概念,让你在Python编程 ...

  6. python编程案例教程答案-python编程案例教程pdf下载

    python编程案例教程pdf下载内容摘要 python编程案例教程pdf下载教程,巧妙的谋划,巧妙的计谋.娄底电脑教程,巧克力奶茶等都是理想的增肥品.巧克力麦片等等,南宁街舞教程,巧克力成为一种&q ...

  7. python数据挖掘系列教程——PySpider框架应用全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python数据挖掘系列教程--PySpider框架应用全解. PySpider介绍 pyspider上手更简单,操作更加简便,因为它增加了 ...

  8. python基础系列教程——数据结构(列表、元组、字典、集合、链表)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 基本顺序存储结构--列表与元组 Python中的基本顺序存储结构是列表与元组,在操作的复杂度上和数组完全相同,其中列表是可变数据类型, ...

  9. TZC Python编程入门教程 ————题解

    本博客原文地址:Python编程入门教程(以在线评测平台为载体) - 暴力都不会的蒟蒻 - 博客园,原文体验更佳 如果你是一名浙江2020级及以后的高中生要学习Python,抑或是一位科学工作者要学习 ...

最新文章

  1. 报名 | 最后一次线下免费编程课程开启,全球最大免费编程社区!(附往期学习资源)...
  2. 配置Tomcat6的管理用户
  3. php html5 css样式,怎么在html页面写css样式表
  4. boost::uuid::string_generator相关的测试程序
  5. CentOS6.5的安装及忘记root密码的措施
  6. 【Java并发性和多线程】线程安全及不可变性
  7. bg感_【0328】BG推文 | 5本我在逃生游戏里养娃娃+岁月缱绻已无你+关于我比女主苏这回事+消失的白月光又回来了等...
  8. ESXi 5.1 安装 Mac OSX Lion 10.7
  9. 关于《PHP任务学习》的说明
  10. c语言编程多分支,C语言编程(练习4:分支和跳转 )
  11. 用计算机计算勾股定理,勾股定理公式计算器(勾股定理计算工具)V2018.1.0 官方版...
  12. Android Paint,Canvas api 详解
  13. 软件测试是不是IT行业最容易学的 ,大概需要多长时间,就业前景好吗?
  14. 恒凯USB数据采集卡在国产麒麟操作系统下的应用(一)环境设置、采集卡驱动安装及C语言采集应用
  15. 一天外汇交易走势时间分布
  16. 2019辽宁公务员考试行测常识大全:公务员常识40000问(四十八)(2)
  17. Adjustment Office
  18. “开源社”成立:众人同心,其利断金
  19. 「JAVA」通过抢气球案例,来梳理线程基础知识
  20. Redhat7 yum安装有问题+yum无法使用+There are no enabled repos. Run “yum repolist all“ to see the repos you ha

热门文章

  1. haproxy搭建web群集
  2. Jmeter之Bean shell使用(二)
  3. 如何将EDM营销与多渠道推广方式相结合
  4. 2010年下半年计算机专业技术资格考试工作安排
  5. 研究发现:一心多用会使认知水平下降
  6. bzoj2460: [BeiJing2011]元素
  7. cf769D(枚举位或运算)
  8. BZOJ 4516: [Sdoi2016]生成魔咒 [后缀自动机]
  9. BootStrap导航栏的使用
  10. [Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange