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

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

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



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

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

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

去建立你的代码模型。



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

我学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

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

最新文章

  1. SSDB图形界面管理工具:phpssdbadmin安装部署
  2. csuoj 1116: Kingdoms
  3. SNMP MIB中的含read-create节点的表的实现
  4. php100 编程小技巧
  5. skiing(搜索+记忆化搜索)
  6. iOS开发-OC语言 (二)类的设计
  7. 改进SQL Server 性能 - 索引碎片重建
  8. Android 动画 (1) 基础
  9. org.apache.ibatis.builder.IncompleteElementException: Could not find result map com.hp.entity.Emp
  10. 环境部署(七):linux下Jenkins+Git+JDK持续集成
  11. Python常用模块--datetime
  12. mysql_connect和mysql_pconnect区别
  13. Wasserstein距离
  14. 另一鲜为人知的单例写法-ThreadLocal
  15. MVC自定义路由01-为什么需要自定义路由
  16. Maven(4)-利用intellij idea创建maven 多模块项目
  17. CodeForces - 1004B
  18. 【云安全与同态加密_调研分析(3)】国内云安全组织及标准——By Me
  19. lintcode-163-不同的二叉查找树
  20. HUAS 1483 mex(莫队算法)

热门文章

  1. Mybatis+Druid多数据源配置
  2. E. Paint the Tree(树形dp)
  3. Linux使用/proc/stat计算CPU使用率
  4. Resin介绍及其使用配置
  5. java正则(贪婪、勉强)
  6. 75)PHP,session在使用时的一些语法问题
  7. JS UTC 昨天
  8. Linux文件属性和权限
  9. springboot学习笔记:7.IDEA下5步完成热部署配置
  10. markdown常见用法