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

当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流群号:984137898 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!

文字有点长,对于不想看文字的朋友,可以去这里看视频,视频可能更好理解

https://www.piqizhu.com/v/1GK...

本节课,我们来学习,如何创建一个类, 也就是怎么用python画设计方案

先来看一下 前面课程里出现过的 几张设计方案

前面女娲造人的故事里,女娲创造了6张设计方案

扫描二维码关注公众号,回复: 6182714 查看本文章

我们接下来根据那个故事的节奏,也来创造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 就代表当时那种情景下的自己

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

猜你喜欢

转载自blog.csdn.net/python_1111/article/details/89813982