共计 2425 个字符,预计需要花费 7 分钟才能阅读完成。
文字有点长,对于不想看文字的朋友,可以去这里看视频,视频可能更好理解
https://www.piqizhu.com/v/1GK…
本节课,我们来学习,如何创建一个类,也就是怎么用 python 画设计方案
先来看一下 前面课程里出现过的 几张设计方案
前面女娲造人的故事里,女娲创造了 6 张设计方案
我们接下来根据那个故事的节奏,也来创造 6 张设计方案
创建类
创建 物种设计图 的类
先来看第一张设计方案,物种设计方案
这张设计图,里的东西,有四肢,还有个头、身体
那么我们设计的类如下:
class 物种设计方案:
头 = 1
前肢 = 2
后肢 = 2
身体 = 1
要创建一个类,和创建一个函数差不多,
先写一个 class,然后一个空格,接着写类的名字,
类的名字和变量名的命名规则一样,通常类名建议驼峰命名法
也就是要像个骆驼
比如,
你的类名是 man 那么应该写成 Man
如果你的类名是 goodman 那么你应该写成 GoodMan
每个单词的首字母用大写,如果只有一个字母,首字母要大写,如果有多个单词,每个单词首字母都要大写
这只是行业里的一个约定,并没有强制规定,你不遵守也可以
我这里的例子,为了方便大家理解,会使用中文汉字
class 后面的 物种设计方案 就是我的类名,类名后面一个冒号
接着换行,一个缩进,我这里给这个类,增加了 4 个属性,就像 声明变量一样
同样为了便于大家理解,这里的变量名我也用了中文汉字
这里的 物种设计方案 就是我们创建的类的名字,简称类名
在类中的这几个变量,就是这个类的属性,就和我们平时的变量是一样的,但这里的这几个变量,归属于这个类,就好比,我们大家都归属于中国
如此,我们就完成了,物种设计方案的制作
创建 动物设计方案 的类
接下来,在这个基础上,制作一个动物设计方案
class 动物设计方案(物种设计方案):
def 吃东西(self):
pass
def 跑(self):
pass
def 叫(self):
pass
你可以发现,这个类,和上个类十分相似,但也有一些区别,
比如,类名后面多了个括号,括号里多了 物种设计方案
几个字,
而且这个类里面,居然写了 3 个函数,这分别都是什么含义呢?
类名后面的括号,写了谁,就表示这个类要继承谁,我们这里的 动物设计方案,继承了 物种设计方案,
所以,物种设计方案,被写在了,动物设计方案后面的括号里,这个括号,就是用来表示声明继承关系的
这里我们可以看出 动物设计方案的 父类 就是 物种设计方案
而 物种设计方案,在类名后面,直接就是问号,没有括号,他没有继承别人吗?
其实是有的,在 Python 内部,某个类没有声明继承的话,Python 会自动继承 object 类,关于 object 类是什么,我们以后会讲,暂时你只要记住
在 Python 里,所有类都是 object 类的后代
那么类里面外面写的这 3 个函数是啥意思呢?这 3 个函数就是类的方法,通常我们叫做类方法,
而且你应该也看到了,类方法的第一个参数都是 self,这个参数是必须要传的,不能少,但这个参数名字你可以改成别的,比如 你可以改成,a,或者别的
不过,为了便于大家理解,行业里,大家统一都写的是 self,所以,建议你也遵守这个规定
这几个类函数,我们是留空的,写了个 pass 语句,没有填充内容,因为目前我们还不知道写什么好
创建 人类设计方案 的类
现在,让我们基于 人类设计方案,创造一个类吧
class 人类设计方案(动物设计方案):
type_name = "人"
def 吃东西(self):
print(self.type_name, ":开始用嘴巴吃东西")
def 跑(self):
print(self.type_name, ":用", self. 后肢 ,"条 后肢跑")
def 叫(self):
print(self.type_name, ":啊啊啊")
我们给这个类,添加了一个属性,type name,值为 人
并且,我们把从父类那里继承来的 3 个方法,进行了重载,也就是把从父类那继承来的类方法里面的代码,进行了修改,写入了新的代码,这几个类方法,父类中就写了个 pass,我们这里改成了 print 语句,这里面你可以写任何代码,就和函数没什么两样
接着我们创建 狗类、猫类、鸭类
class 狗类设计方案(动物设计方案):
type_name = "狗"
def 吃东西(self):
print(self.type_name, ": 开始用嘴巴吃东西")
def 跑(self):
print(self.type_name, ":用", self. 前肢 + self. 后肢 ,"条腿 跑")
def 叫(self):
print(self.type_name, ": 汪汪汪")
class 猫类设计方案(动物设计方案):
type_name = "猫"
def 吃东西(self):
print("开始用嘴巴吃东西")
def 跑(self):
print(self.type_name, ":用", self. 前肢 + self. 后肢 ,"条腿 跑")
def 叫(self):
print("喵喵喵")
class 鸭类设计方案(动物设计方案):
type_name = "鸭"
def 吃东西(self):
print("开始用嘴巴吃东西")
def 跑(self):
print(self.type_name, ":用", self. 后肢 ,"条 后肢 跑")
def 叫(self):
print("嘎嘎嘎")
你可以看到,我们给这几个类的类方法都填充了代码,
你应该已经发现了,每个类,都有一个 type_name 属性
而且,在类方法中,都用到了 type_name 这个属性,并且,前面还多出了一个 self.
self. 这是什么意思呢?这里的 self 就代表 这个类自己
比如,人类设计方案,这个类中的 self,就代表这个 [人类设计方案],我们这里 打印 self.type_name
就表示 要打印,人类设计方案 中的 type_name,
同样的道理,在狗类设计方案中,打印 self.type_name,就表示要访问 狗类设计方案 的 type_name 属性
self 就代表当时那种情景下的自己
如果你还不理解不要紧,接下来的课程里,我们会详细的讲解