Python中面向对象怎么创建一个类

32次阅读

共计 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 就代表当时那种情景下的自己

如果你还不理解不要紧,接下来的课程里,我们会详细的讲解

正文完
 0