《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语言中还有更优雅的实现方式:无须先克隆现有对象,然后再修改新对象,而是可以直接用新参数来创建新对象,这样做效率会高很多。

相关文章
|
25天前
|
数据处理 UED Python
Python 进度条:告别枯燥等待,让你的程序动感十足!
Python 进度条:告别枯燥等待,让你的程序动感十足!
49 1
|
3天前
|
存储 Shell 区块链
怎么把Python脚本打包成可执行程序?
该文档介绍了如何将Python脚本及其运行环境打包成EXE可执行文件,以便在不具备Python环境的计算机上运行。首先确保Python脚本能够正常运行,然后通过安装PyInstaller并使用`--onefile`参数将脚本打包成独立的EXE文件。此外,还提供了去除命令行窗口和指定可执行文件图标的详细方法。这些步骤帮助用户轻松地将Python程序分发给最终用户。
怎么把Python脚本打包成可执行程序?
|
2天前
|
算法 程序员 Linux
Python编程入门:构建你的第一个程序
【9月更文挑战第4天】编程是现代技术发展的基石,而Python作为一门简洁、易学且功能强大的编程语言,已成为众多初学者的首选。本文将引导你通过一个简单的Python程序,探索编程世界的奥秘,并了解如何利用Python实现基本的算法逻辑。无论你是完全的新手还是希望巩固基础的开发者,这篇文章都将为你提供一个清晰的学习路径。从安装Python环境开始,到编写第一个程序,我们将一步步揭开编程的神秘面纱。
|
8天前
|
Python
Python编程入门:构建你的第一个程序
【8月更文挑战第31天】本文是面向初学者的Python编程指南,将引导读者通过实际案例学习Python基础。我们将一起编写一个简单的程序来展示如何运用变量、控制结构和函数等概念。文章末尾附有完整代码示例供参考和实践。
|
10天前
|
设计模式 XML 数据格式
python之工厂设计模式
python之工厂设计模式
python之工厂设计模式
|
7天前
|
小程序 Python
Python 编程入门:打造你的第一个程序
【8月更文挑战第31天】 在数字化时代,编程已成为一项宝贵的技能。本文将通过一个简单示例引导初学者步入Python编程的世界。我们将从基础语法开始,逐步构建一个小程序,并在此过程中探索编程的逻辑思维与问题解决策略。无论你是科技爱好者还是职场新人,这篇文章都将为你开启编程之旅提供助力。
|
7天前
|
程序员 Python
Python 编程入门:打造你的第一个程序
【8月更文挑战第31天】编程初学者常常在起步时感到迷茫。本文将通过浅显易懂的方式,带领读者从零开始,一步步构建他们的第一个 Python 程序。我们将探索 Python 的安装、基础语法,并通过一个实际的项目——简易计算器,来巩固学习成果。无论你的背景如何,这篇文章都将为你打开编程世界的大门,让你轻松上手,享受编程的乐趣。
|
7天前
|
IDE 程序员 开发工具
Python编程入门:构建你的第一个程序
【8月更文挑战第31天】 本文是专为编程新手设计的Python入门指南,旨在通过一个简单实例引导读者了解Python编程的基础。文章将逐步展示如何从零开始编写一个“Hello, World!”程序,并解释代码中每一部分的功能,帮助初学者建立对Python语言的初步认识和理解。通过本文,读者将学会设置编程环境、编写简单的Python代码以及运行和调试程序。
|
7天前
|
存储 自然语言处理 小程序
Python编程入门:从零基础到编写你的第一个程序
【8月更文挑战第31天】探索编码的奥秘,开启你的编程之旅。本文将引导你通过Python语言轻松步入编程世界。无需担心没有基础,我们将从最基础的概念开始,一步步带你理解编程的核心思想,并最终实现一个属于你自己的小程序。让我们一同见证,如何将一行行代码转化为能够执行任务的数字魔法。
|
9天前
|
PHP C++ Python
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
12 0
下一篇
DDNS