首页 > 编程 > Python > 正文

python面向对象入门教程之从代码复用开始(一)

2020-02-16 00:03:51
字体:
来源:转载
供稿:网友

前言

本文从代码复用的角度一步一步演示如何从python普通代码进化到面向对象,并通过代码去解释一些面向对象的理论。所以,本文前面的内容都是非面向对象的语法实现方式,只有在最结尾才给出了面向对象的简单语法介绍。各位道兄不妨一看,如果留下点笔墨指导,本人感激不尽。

下面话不多说了,来一起看看详细的介绍吧

最初代码

3种动物牛Cow、羊Sheep、马Horse发出的声音各不相同,于是在同一个目录下建立三个模块文件:

$ tree ..|-- cow.py|-- horse.py`-- sheep.py

三个模块文件的内容都只定义了各自的speak()函数:

# cow.pydef speak(): print("a cow goes moooo!")# sheep.pydef speak(): print("a sheep goes baaaah!")# horse.pydef speak(): print("a horse goes neigh!")

然后当前目录下在创建一个程序文件main.py,导入这三个模块文件,分别调用这三种动物的speak()函数,它们将发出不同声音:

# main.pyimport cow,sheep,horsecow.speak()sheep.speak()horse.speak()

让代码更具共性的两种基本方法

上面的cow.py、sheep.py和horse.py中,都是speak()函数,不同的是函数内容,确切地说是函数内容中print()输出的部分不同,它们输出的结构是a 动物名 goes 叫声!。于是为了让代码更具共性,或者说复用性更高,可以将各模块文件中的动物名和叫声都变得通用化。

目前来说,有两种最基本的方式可以让一段代码变得更共性、共通用化:使用参数或变量、使用额外的辅助函数。当然,除此之外还有更多的方法,但目前来说这两种是最基本的,也是最容易理解的。

使用参数(变量)让代码更具共性

首先让动物名变得共性化。可以让speak()中的动物名使用一个参数来替代。例如名为self的参数变量(之所以使用self,是因为在面向对象中它有特殊含义,后文解释),于是修改这三个模块文件:

# cow.pydef speak(self): print("a %s goes moooo!" % (self))# sheep.pydef speak(self): print("a %s goes baaaah!" % (self))# horse.pydef speak(self): print("a %s goes neigh!" %(self))

它们现在在动物名上和参数名上已经完全相同,需要调用它们时,只需在函数调用处为他们传递不同的动物名即可。例如,在main.py中:

import cow,sheep,horsecow.speak("cow")sheep.speak("sheep")horse.speak("horse")

使用辅助函数让代码更具共性

除了参数(变量),还可以定义额外的函数来上面的代码变得更具共性。例如,这三种动物的叫声,可以额外定义一个sound()函数描述它们。于是在前面的基础上继续修改这三个模块文件:

# cow.pydef speak(self): print("a %s goes %s!" % (self,sound()))def sound(): return "moooo"# sheep.pydef speak(self): print("a %s goes %s!" % (self,sound()))def sound(): return "baaaah"# horse.pydef speak(self): print("a %s goes %s!" % (self,sound()))def sound(): return "neigh"            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表