函数只能面向过程,来回互相调用后顺序执行,

简单的编码项目,还能应付的过来,

复杂的大型项目,调用多了,就会乱。



如何才能不乱呢,可尝试下, 面向对象类的概念,

将现实世界的事物抽象成对象,将现实世界中事物的关系抽象成类,

即要秉着“万物皆对象,一切皆可归类”的中心思想,

去建立你的代码模型。



一听特别晕乎,我也一样,

我学Python的时候,写了将近大半年的面向过程函数,

由于我也无法深入理解到面向对象类的概念,

当时就是无法将代码写成面向对象类的形式。



直到自己去慢慢学习面向对象类的概念,慢慢写大型一点的软件项目,

秉着“万物皆对象,一切皆可归类”的中心思想,

才恍然发现,面向对象类,真是好东西,

比函数严谨多了。。。。。

初级面向对象类的建模

小项目或小工具的代码实现,模型比较简单:

脑海里虚拟一个空白的世界,想象下这个世界有哪类事物(一般是名词),

比如我们常用的包括:学生类,员工类,课程类等。

比如我们本章节介绍的下载的脚本,如果要进行面向对象类的实现,

肯定是可以的, 虽然实际编码过程中,我们可能用函数实现就足够了,

但是秉着“万物皆对象,一切皆可归类”的中心思想。

可创建一个下载器类, 下载器的类初始化(新建一个对象)是接入一个url,

代表一个具备下载某个url的实例对象。

如下:

# coding=utf-8
import os
import requests class FileDownloader(): #类名
def __init__(self, url): #类的初始化
self.url = url def download_file(self):
s = requests.get(self.url)
file_name = self.url.split("/")[-1]
with open(file_name, "wb") as hf:
hf.write(s.content)
file_path = os.path.abspath(file_name)
print("file downloaded to %s" % file_path)
return file_path if __name__ == '__main__':
fd_obj = FileDownloader("http://www.zipython.com/images/angel.mp3")
# FileDownloader类初始化,成fd_obj对象
fd_obj.download_file() # 一般对象才能调用方法(函数)
高级面向对象类的建模

大项目的代码实现,模型比较复杂,

此类建模,建议还是由专业软件比如UML等。

类代表是具备相同属性或方法的一种事物类别,

这种类别,一般不是真实的事物,只是虚拟出来的进行归类而已。

所以类,一般不具有属性和方法,

但是对象就是真实的事物,不然如何叫实例化对象呢,

所以对象,是具备属性和方法的。

以上同学有疑问?我定义类的时候,不是写了属性和方法吗?

注意咯,定义类,一般用到self, self其实是一个默认的对象,

所以:一般是实例化成对象后,才具备属性和方法(函数),

对于测试人员,一般不鼓励使用无需实例化的静态方法。

更多更好的原创文章,请访问官方网站:www.zipython.com

原文链接:https://www.zipython.com/#/detail?id=b685d02527274d0ca155a84fcc569d3e

也可关注“武散人”微信订阅号,随时接受文章推送。

《自拍教程36》段位三_Python面向对象类的更多相关文章

  1. Objective-C 基础教程第三章,面向对象编程基础知

    目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...

  2. 《自拍教程52》Python_adb运行Shell脚本

    Android作为一款Linux终端,肯定是支持.sh后缀的Shell脚本的运行的, 有时候测试环境准备或者长时间截取复杂的日志等,开发会给到一些Shell脚本. Shell脚本的执行的优势: 快捷高 ...

  3. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

  4. 《Visual C++ 2010入门教程》系列三:关于C++的一些问题

    <Visual C++ 2010入门教程>系列三:关于C++的一些问题   这一回我自己都不知道应该写点什么好,或许今天的篇幅会比往常短很多.我说过,这不是C++的教程,因为我还没有那个能 ...

  5. Python学习-第三天-面向对象编程基础

    Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...

  6. 《自拍教程45》Python_adb实时监控Logcat日志

    接上一篇:adb命令_一键截取logcat日志, 有一天, 系统稳定性开发负责人找到我,希望我能在跑android 系统monkey的时候, 实时监控logcat的输出,如果一旦发现"jav ...

  7. 《自拍教程46》Python_adb自动拍照100张

    Android手机测试, 涉及照相机(Camera)应用程序的稳定性测试的用例, 需要涉及100张照片的拍照自动化测试. 准备阶段 先清理老照片,照片一般存放在/scard/DCIM目录下 adb s ...

  8. 《自拍教程51》Python_adb批量生成App版本表格

    案例一:版本在软件研发阶段是很重要的, 不同的版本, 已修复的Bug也不一样, 所实现的功能不一样, Android终端产品正式版本发布前,项目经理除了确保系统版本确定无误外, 还会逐个验证所搭载的所 ...

  9. 进击的Python【第六章】:Python的高级应用(三)面向对象编程

    Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...

随机推荐

  1. JavaMail读取收件箱退信邮件/分析邮件附件获取Message_Id

    需求描述:公司最近有个项目邮件通知功能,但是客户上传的邮件地址并不一定存在,以及其他的各种问题.所有希望发送通知后有个回执,及时发现地址存在问题的邮箱. 需求分析:经过分析JavaMail可以读取收件 ...

  2. HDU 6126 Give out candies(网络流)

    题目给出n,m,k 然后给出n*m的矩阵a[i][j]代表第i个人在获得j 颗糖果能得到的满足值, 然后k是k行每行输入三个整数x,y,z     ,x,y,z表示一组限制表示第x个人分到的糖数减去第 ...

  3. yum安装与卸载软件常见命令

    1.使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的. 安装的命令是,yuminstall ~,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突 ...

  4. LeetCode No.115,116,117

    No.115 NumDistinct 不同的子序列 题目 给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数. 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且 ...

  5. k8s中command、args和dockerfile中的entrypoint、cmd之间的关系

    当用户同时写了command和args的时候自然是可以覆盖DockerFile中ENTRYPOINT的命令行和参数,那么对于具体情况呢,比如仅仅写了command或者args的时候呢?完整的情况分类如 ...

  6. mysql查找json格式列的指定字段值

    SELECT json_extract(字段名,'$.json结构') FROM 表名;如果json里有双引号,那这样取出来的数据也带双引号,要去掉就使用REPLACE函数 例如t_submit_an ...

  7. 收集到的技术相关网址——delphi

    1.DLL封装登录框架实现代码复用 https://www.cnblogs.com/wenwencao/articles/1333659.html

  8. html,将元素水平,垂直居中的四种方式

    将元素垂直,水平居中分两种情况:一个是元素尺寸固定,二是元素尺寸不固定 一.尺寸固定 方法1:定位 ,50%,margin负距 .box{ width: 400px; height: 300px; b ...

  9. 使用Cron表达式创建定时任务

    CronTriggerCronTrigger功能非常强大,是基于日历的作业调度,而SimpleTrigger是精准指定间隔,所以相比SimpleTrigger,CroTrigger更加常用.CroTr ...

  10. 1 jquery对checkbox的简单操作

    //全选和全不选 votefunction selectAll(){ if($(":checkbox").prop('checked')){     //$(":chec ...