上节介绍了Python中类的封装机制,本节结合一个具体例子进行详细说明。

我们定义一个Person类,其内部有姓名、年龄和类型三个实例变量,并定义了相关的存取方法:

class Person():

def __type(self):

if self._age<16: return '青少年'

elif self._age<60: return '中年'

else:return '老年'

def __init__(self,name):self.name,_age,__persontype=name,0,'未知'

def get_name(self,name):return self.name

def set_age(self,age):

self._age=age

self.__persontype=self.__type()

def get_age(self,age):return self._age

def get_type(self):return self.__persontype

注意,其中实例变量_age年龄用的是一个下划线开头,实例变量__persontype类型是双下划线开头。定义完成后,我们执行如下代码定义两个人的实例,并设置年龄:

p1=Person('张三')

p2=Person('李莎')

p1.set_age(36)

p2.set_age(12)

同时沿用前面章节定义的函数dirp以去掉属性中的双下划线开头的变量和方法:

def dirp(iter): return [i for i in dir(iter) if not i.startswith('__')]

执行:dirp(p1)

输出结果:['_Person__persontype', '_Person__type', '_age', 'get_age', 'get_name', 'get_type', 'name', 'set_age']

可以看到:__persontype属性被变为了_Person__persontype,__type方法被变为了_Person__type,同时执行访问原属性的实例变量会报错。具体执行截图如下:

本节结合具体案例了Python的封装机制,相信大家能完全理解,并在开发时都能遵守这些约定。

老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。

欢迎大家批评指正,谢谢大家关注!

python类封装成dl_第7.9节 案例详解:Python类封装相关推荐

  1. Python中常见的__init__.py是什么意思?详解Python import的方式和原理

    Python中常见的__init__.py是什么意思?详解Python import的方式和原理 1 什么是模块化编程? 2 __init__.py文件的作用 3 Python如何import第三方库 ...

  2. python代码案例详解-第7.20节 案例详解:Python抽象类之真实子类

    第7.20节 案例详解:Python抽象类之真实子类 上节介绍了Python抽象基类相关概念,并介绍了抽象基类实现真实子类的步骤和语法,本节结合一个案例进一步详细介绍. 一. 案例说明 本节定义了图形 ...

  3. python定义类方法用来计算整数的减法运算_详解python的二元算术运算,为什么说减法只是语法糖?...

    原标题:详解python的二元算术运算,为什么说减法只是语法糖? 原题 | Unravelling binary arithmetic operations in Python 作者 | Brett ...

  4. python 正则表达式 断言 不定长表达式_【教程】详解Python正则表达式之: (?!…) negative lookahead assertion 前向否定匹配 /前向否定断言...

    Python 2.7的官网文档中的解释是:(?!...)Matches if ... doesn't match next. This is a negative lookahead assertio ...

  5. python代码案例详解-Python运算符重载详解及实例代码

    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...

  6. python编程入门与案例详解-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...

  7. python爬虫代码实例源码_python爬虫及案例详解(附代码)

    安装三大库 1.requests 2.BeautifulSoup 3.lxml 有的网站做了相应的反爬虫,不能用普通方法爬取网站数据. 这里我用python爬取了几个网站的数据,分别存入csv文件,m ...

  8. 基于python的数据建模与分析案例_基于案例详解Python数据分析与机器学习

    课程概述: 使用数据领域最主流语言Python及其分析与建模库作为核心武器.对于机器学习经典算法给出完整的原理推导并基于实例进行讲解,基于案例演示如何应用机器学习算法解决实际问题. 课程特色: 通俗易 ...

  9. 第7.11节 案例详解:Python类实例变量

    上节老猿介绍了实例变量的访问方法,本节结合一个具体案例详细介绍实例变量访问. 本节定义一个Vehicle类(车),它有三个实例变量self.wheelcount(轮子数).self.power(动力) ...

  10. python代码案例详解-Python实现电视里的5毛特效实例代码详解

    前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景,于是就有了今天的文章. 我们先看看能实现什么效果,先来个正常版的,先看看原场景: 下面 ...

最新文章

  1. windows 7装IIS
  2. 【Kotlin】Kotlin 委托 ( 使用 by 关键字进行接口委托 )
  3. 寻找最大的K个数,Top K问题的堆实现
  4. Struts2--DomainModel接收参数---使用广泛!!!
  5. 基于Xml 的IOC 容器-分配解析策略
  6. ACCESS SQL语法参考
  7. jvm破坏双亲委派_破坏JVM
  8. java接口作用和好处,持续更新大厂面试笔试题
  9. python3输入输出_Python3 输入和输出
  10. 网站设计软件linux,ubuntu下的网页设计 网页制作软件工具.pdf
  11. 在asp.net中使用线程
  12. 《Linux就该这么学》正式版电子书发布!
  13. 超链接显示网站 A,访问后进入网站 B
  14. matlab画图——semilogy函数介绍
  15. 【剑拔峨眉 团队裂变】蜜拓蜜教育高端特训营第二期即将上线
  16. 泛泰 A870 4.1.2 刷第三方专用Recovery合集
  17. linux中文件颜色,蓝色,白色等各自代表的含义
  18. 视频直播中的心形漂浮效果
  19. 强制退出程序的六种方法!
  20. 中国科研人员开发出“蚁群”微型机器人

热门文章

  1. 使用Water-Scrum-Fall交付软件
  2. sublime每次打开时都提示升级,怎么取消这个弹出框?
  3. JSPServlet相关
  4. php数据回显是什么意思,关于mysql:php脚本回显部分php而不是什么意图
  5. 修改docx表格_文件杂乱怎么办?批量整理修改文件名我就用它
  6. atoi函数_linux网络编程之POSIX 消息队列 和 系列函数
  7. dedecms联动筛选_织梦dedecms图片联动筛选教程
  8. java 睡眠_Java 线程和多线程执行过程分析
  9. 电脑同时安装python2和3_电脑上同时安装Python2和Python3
  10. SQL语句:查询多表更新数据