前言
本文从代码复用的角度一步一步演示如何从python普通代码进化到面向对象,并通过代码去解释一些面向对象的理论。所以,本文前面的内容都是非面向对象的语法实现方式,只有在最结尾才给出了面向对象的简单语法介绍。各位道兄不妨一看,如果留下点笔墨指导,本人感激不尽。
下面话不多说了,来一起看看详细的介绍吧
最初代码
3种动物牛Cow、羊Sheep、马Horse发出的声音各不相同,于是在同一个目录下建立三个模块文件:
$ tree .
.
|-- cow.py
|-- horse.py
`-- sheep.py
三个模块文件的内容都只定义了各自的speak()函数:
# cow.py
def speak():
print("a cow goes moooo!")
# sheep.py
def speak():
print("a sheep goes baaaah!")
# horse.py
def speak():
print("a horse goes neigh!")
然后当前目录下在创建一个程序文件main.py,导入这三个模块文件,分别调用这三种动物的speak()函数,它们将发出不同声音:
# main.py
import cow,sheep,horse
cow.speak()
sheep.speak()
horse.speak()
让代码更具共性的两种基本方法
上面的cow.py、sheep.py和horse.py中,都是speak()函数,不同的是函数内容,确切地说是函数内容中print()输出的部分不同,它们输出的结构是a 动物名 goes 叫声!。于是为了让代码更具共性,或者说复用性更高,可以将各模块文件中的动物名和叫声都变得通用化。
目前来说,有两种最基本的方式可以让一段代码变得更共性、共通用化:使用参数或变量、使用额外的辅助函数。当然,除此之外还有更多的方法,但目前来说这两种是最基本的,也是最容易理解的。
使用参数(变量)让代码更具共性
首先让动物名变得共性化。可以让speak()中的动物名使用一个参数来替代。例如名为self的参数变量(之所以使用self,是因为在面向对象中它有特殊含义,后文解释),于是修改这三个模块文件:
# cow.py
def speak(self):
print("a %s goes moooo!" % (self))
# sheep.py
def speak(self):
print("a %s goes baaaah!" % (self))
# horse.py
def speak(self):
print("a %s goes neigh!" %(self))
它们现在在动物名上和参数名上已经完全相同,需要调用它们时,只需在函数调用处为他们传递不同的动物名即可。例如,在main.py中:
import cow,sheep,horse
cow.speak("cow")
sheep.speak("sheep")
horse.speak("horse")
使用辅助函数让代码更具共性
除了参数(变量),还可以定义额外的函数来上面的代码变得更具共性。例如,这三种动物的叫声,可以额外定义一个sound()函数描述它们。于是在前面的基础上继续修改这三个模块文件:
# cow.py
def speak(self):
print("a %s goes %s!" % (self,sound()))
def sound():
return "moooo"
# sheep.py
def speak(self):
print("a %s goes %s!" % (self,sound()))
def sound():
return "baaaah"
# horse.py
def speak(self):
print("a %s goes %s!" % (self,sound()))
def sound():
return "neigh"
在main.py中,仍然可以使用之前的方式对这3个speak()进行调用:
import cow,sheep,horse
cow.speak("cow")
sheep.speak("sheep")
horse.speak("horse")
现在,这3个模块文件的speak()已经完完全全地共性化了。
初步理解类和对象
所谓的类,就像是一个模板;所谓对象,就像是通过模板生成的具体的事物。类一般具有比较大的共性,对象一般是具体的,带有自己的特性。
类与对象的关系,例如人类和人,鸟类和麻雀,交通工具和自行车。其中人类、鸟类、交通工具类都是一种类型称呼,它们中的任何一种都具有像模板一样的共性。例如人类的共性是能说话、有感情、双脚走路、能思考等等,而根据这个人类模板生成一个人,这个具体的人是人类的实例,是一个人类对象,每一个具体的人都有自己的说话方式、感情模式、性格、走路方式、思考能力等等。
类与类的关系。有的类的范畴太大,模板太抽象,它们可以稍微细化一点,例如人类可以划分为男性人类和女性人类,交通工具类可以划分为烧油的、电动的、脚踏的。一个大类按照不同的种类划分,可以得到不同标准的小类。无论如何划分,小类总是根据大类的模板生成的,具有大类的共性,又具有自己的个性。
更多:ssh pythonpython面向对象入门教程之从代码复用开始(一)
https://www.002pc.comhttps://www.002pc.com/python/342.html
你可能感兴趣的python,入门教程,复用,面向对象,代码,开始
No alive nodes found in your cluster
0踩
赏
0 赞