《Python编程实战:运用设计模式、并发和程序库创建高质量程序》—— 1.4 原型模式

简介:

本节书摘来自华章出版社《Python编程实战:运用设计模式、并发和程序库创建高质量程序》一 书中的第1章,第1.4节,作者:(美) Mark Summerfield,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 原型模式

如果想根据现有对象复制出新的对象并对其修改,那么可以考虑“原型模式”(Prototype Pattern)。
在前面,尤其是前一节里,大家已经看到,Python语言提供了多种创建新对象的方式,只要在运行期能够确定其类型就可以,即便只知道类型的名字,我们也能创建出实例来。
screenshot
screenshot

上面这个Point类经常出现在各种范例代码中,而在Python语言里,下面7种办法都可以创建出新的Point对象:
screenshot

point1是按照传统方式(也就是静态方式)创建的,我们把Point类对象当成构造器使用。其他point对象则是动态创建出来的,其中,在创建point2、point3和point4时,我们把类名当成参数传给相关函数。由于创建point3与point4时所用的方法都很简洁,所以我们没有必要再像创建point2时那样使用有安全隐患的eval()函数了。point4的创建原理与point3完全相同,我们调用了Python语言内置的globals()函数,这样写出来的代码更为优雅。point5是由通用的make_object()函数创建出来的,我们在调用此函数时,传入了类对象和相关参数。point6采用经典的“原型”方式创建:首先根据现有对象复制出新对象,然后在新对象上执行初始化或配置操作。point7是用point1的类对象创建出来的,创建时传入了新的参数。
由point6的创建过程可知,我们能够通过Python语言内置的copy.deepcopy()函数以“原型法”(prototyping)来创建新对象。而point7则告诉大家,这项任务在Python语言中还有更优雅的实现方式:无须先克隆现有对象,然后再修改新对象,而是可以直接用新参数来创建新对象,这样做效率会高很多。

相关文章
|
1天前
|
监控 测试技术 持续交付
Python自动化测试代理程序可用性
总之,通过编写测试用例、自动化测试和设置监控系统,您可以确保Python自动化测试代理程序的可用性,并及时发现和解决问题。这有助于提供更可靠和高性能的代理服务。
11 4
|
3天前
|
Python
简单的 Python 计算器程序
这是一个简单的Python计算器程序,实现了加、减、乘、除功能。用户选择运算类型及输入两个数字后,程序依据选择调用相应函数进行计算并显示结果。若输入非法,程序显示错误信息。
10 3
|
7天前
|
监控 测试技术 API
Python Web应用程序构建
【4月更文挑战第11天】Python Web开发涉及多种框架,如Django、Flask和FastAPI,选择合适框架是成功的关键。示例展示了使用Flask创建简单Web应用,以及如何使用ORM(如SQLAlchemy)管理数据库。
17 4
|
8天前
|
人工智能 数据库 开发者
Python中的atexit模块:优雅地处理程序退出
Python中的atexit模块:优雅地处理程序退出
9 3
|
10天前
|
存储 索引 Python
Python从入门到精通——1.3.1练习编写简单程序
Python从入门到精通——1.3.1练习编写简单程序
|
10天前
|
设计模式 算法 程序员
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
Python从入门到精通:2.1.3深入学习面向对象编程——设计模式的学习与实践
|
11天前
|
监控 Python
Python监控主机是否存活,并发报警邮件
Python监控主机是否存活,并发报警邮件
|
11天前
|
Python
过年了,让GPT用Python给你写个放烟花的程序吧!
过年了,让GPT用Python给你写个放烟花的程序吧!
16 0
|
13天前
|
设计模式 Java
【设计模式系列笔记】原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而无需知道其具体类型。这种模式属于对象创建型模式,通过克隆来避免使用new关键字创建对象,提高性能和降低系统的耦合度。
31 6
|
15天前
|
存储 数据采集 NoSQL
使用Python打造爬虫程序之数据存储与持久化:从网络到硬盘的无缝对接
【4月更文挑战第19天】本文探讨了爬虫中的数据存储与持久化技术,包括文本文件存储、数据库(关系型与非关系型)、NoSQL数据库和键值存储,以及ORM框架的使用。根据数据类型、规模和访问需求选择合适存储方式,并注意数据安全、备份和恢复策略。正确选择和应用这些技术能有效管理和利用爬取数据。