小小的Python编程故事

  • 原创
  • 发布时间: 3个月前
  • 收藏数: 0 / 点赞数: 0 / 阅读数: 39

这一天,小小的爷爷来到蛋糕店,他在厨房捣鼓了一阵,做出来一款小小从来没见过的奇怪 蛋糕。

首先,这个蛋糕是三角形的,看起来表面没有使用奶油,但是却有五种颜色。奇怪的是, 爷爷说这个蛋糕要用吸管来吃。

 

蛋糕模板:类的定义 


小小问爷爷:“这个奇怪的蛋糕叫什么名字呢?”爷爷说:“还没想好呢!反正是蛋糕的一种。

” 聪明的小小觉得该这么描述这个没有名字的蛋糕:1.  不管怎么样,它是一个物体。2.  它具有一些特征(或者属性),比如,三角形、没奶油、五种颜色。3.  可以对它采取一些动作,或者执行一些“方法”,比如,可以吃它,还可以用吸管“喝” 它,当然还可以出售它。 

这个蛋糕虽然奇怪,但是销售却异常火爆,供不应求。

小小拿出“蛋糕制造机”来帮忙,但是“蛋糕制造机”只能按照蛋糕的模板来生产蛋糕。

于是,小小先为这款奇怪的蛋糕创建一个模板。打开 Python IDLE Shell,新建一个文件,保存到 C:WorkspaceChapter19Xcake.py,输入代 码如下:

#创建类 
class Xcake:     	
  name="古怪蛋糕"     	
  colorNumber=5     	
  color=['红','黄','蓝','绿','黑']     	
  shape='三角形'     	
  creamContent=0 	
     
  def eat(self): 	
    return '吃我啊!吃我啊!' 	
     
  def drink(self): 	
    return '喝我啊!喝我啊!' 	
     
  def sell(self): 	
    return '买我啊!买我啊!'

这段代码创建了一个生产这种古怪蛋糕的模板,模板名称叫作 Xcake,在模板内部指明了这种蛋糕的名字、颜色、形状和奶油含量,还指明了使用这种蛋糕的三个方法:eat、drink 和sell。

在 Python 中称这种模板为“类”,并使用关键字 class 来创建类。

类中包含两部分内容:

  • 一系列的变量及其初始值,称这些变量为这类对象的“属性”。

  • 一系列函数的定义,称这些函数为这类对象的“方法”。 

 创建类以后,凡是根据这个类创造的东西,统统称为类的“实例”,也称为类的“对象”。

Python 支持类和对象的所有概念和技术,是一种面向对象的语言。

面向对象的编程,被亲切地称为 OOP, 其是英文“Object Oriented Programming”的缩写。

不仅 Python,许多程序设计语言都使用 OOP 技术。

这里暂不深入讲解这些概念,后面会有详细说明。

可以在一个文件中定义多个类。在使用文件中定义的类之前,需要使用 from…import…来引入类。 

 

制造蛋糕:创建对象 


创建好了 Xcake 类后,就可以开动蛋糕制造机来快速生产这种奇怪的蛋糕了。

运行 Xcake.py 程序,打开 Python IDLE Shell。这时虽然看起来好像什么也没有发生,但实际上已经在内存中加载了 Xcake 类。

接下来输入以下代码就可以创建一个 Xcake 的对象: 

>>> cake1=Xcake()

这样一行代码,就创建了一个 cake1 对象,它具有 Xcake 类所定义的所有属性和方法。

在 Python 中,可以使用对象名加点号(.)来引用对象的属性和方法。

下面新建一个文件 19.1cakeObj.py, 以演示如何创建和使用对象。代码如下: 

#对象示例 	
from Xcake import Xcake  #引入类 	
cake1=Xcake()  #实例化	
print("这个蛋糕有:",cake1.colorNumber,"种颜色")  #使用对象的属性 	
print("蛋糕的颜色有:",cake1.color) 	
print("吃蛋糕时,它会说:",cake1.eat())   #使用对象的方法 	
print("出售时,它会说:",cake1.sell()) 

这段程序首先创建一个 Xcake 的实 例—cake1 对象。

然后使用几个 print() 函数进行输出,在 print()的参数中调用了 对象的属性和方法。

 

如何制造蛋糕?构造方法 


蛋糕制造机是如何制造出一个蛋糕的呢?

这解释起来有点复杂,不过小小觉得它的工作原理有点像在类里面定义的一种特殊方法—构造方法。

每当需要创建对象时,就会调用类的构造方法,这时,在构造方法里创建的那些函数就会被执行。

这些函数就会创建对象的属性。

到底构造函数长什么样呢?

还是通过小小的 Xcake 类来看一看吧。打开 Xcake.py 文件,在 文件末尾添加一个新的类,代码如下: 

#创建类 class XcakePlus:     	
#定义类变量,也称属性     name="古怪蛋糕加强版"     	
price=1 #单价          	
#定义构造方法     	
def __init__(self,size,qty):         	
self.size=size         	
self.qty=qty          	
#定义其他方法    	
def eat(self):         	
print('吃我啊!吃我啊!')     	
def sumPrice(self):  #计算总价         	
print("一共:",self.qty*self.price,"元")            	
def preview(self):         	
print("您要的蛋糕是:",self.name,",尺寸:",self.size,"号",self.qty,"个。")

XcakePlus 类定义了 3 个属性和 4 个方法,其中名为__init__的方法,一看其名字就比较特殊,它的名字以两个连续的下画线开始和结束,而且中间必须是 init,这就是类的构造方法。本例中的这个构造方法有 3 个参数:

  • self—用于获取类的实例。它是必需的,且必须为第一个参数,名称随意,但习惯上使 用 self。

  • size—用于获取传入的整数,表示蛋糕的尺寸。

  • qty—用于获取传入的整数,表示购买的个数。 

函数体有两行代码,分别将传入的参数size和qty赋给类对象的属性。使用self.size和self.qty 表示对象的属性。在Python中,每个类只能有一个构造方法。如果类中没有自定义的构造方法,如前面的Xcake 类,Python 会使用默认的构造方法。默认构造方法是只有一个 self 参数的方法。值得注意的是,在定义类时,如果要在方法中使用对象的属性,则需要使用 self.size、self.qty、self.price 这样的形式。定义好 XcakePlus 类以后,就可以创建它的对象了。新建一个文件 19.2cakeObj.py,输入以 下代码: 

>>> cake1=XcakePlus(8,1) 	
>>> cake2=XcakePlus(10,2) 	
>>> cake3=XcakePlus(12,1) 	
>>> cake1.preview() 	
您要的蛋糕是: 古怪蛋糕加强版 ,尺寸:8 号 1 个。	
>>> cake2.preview() 	
您要的蛋糕是: 古怪蛋糕加强版 ,尺寸:10 号 2 个。	
>>> cake3.preview() 	
您要的蛋糕是: 古怪蛋糕加强版 ,尺寸:12 号 1 个。

是不是很简单!一眨眼,小小已经生产了大量的“古怪蛋糕加强版” ! 

评论