资讯专栏INFORMATION COLUMN

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

only_do / 2730人阅读

摘要:文字有点长,对于不想看文字的朋友,可以去这里看视频,视频可能更好理解本节课,我们来学习,如何创建一个类,也就是怎么用画设计方案先来看一下前面课程里出现过的几张设计方案前面女娲造人的故事里,女娲创造了张设计方案我们接下来根据那个故事的节奏,也

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

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43695.html

相关文章

  • Python理解面向对象

    摘要:面向对象编程,简称,是一种程序设计思想。面向过程与面向对象面向过程的程序设计把函数作为程序的基本单元。以上是在计算机世界里认识面向对象和面向过程,接下来给大家举个生活中的例子就拿你早上想吃鸡蛋灌饼为例。 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 面向过程 ...

    hatlonely 评论0 收藏0
  • Python实例一个背后发生了什么

    摘要:好吧,事实上,类本身也是实例,当然,它们是元类的实例。中的一切都是对象,它们要么是类的实例,要么是元类的实例,除了。 写在最前面 一些很重要的知识,我的写得有点乱,也可以去看这些文章 Python 面向对象(初级篇) Python 面向对象(进阶篇) 深刻理解Python中的元类(metaclass) 首先来看一个例子,正常情况下我们定义并且实例一个类如下 class Foo(ob...

    shusen 评论0 收藏0
  • 4-面向对象编程

    摘要:声明对象构造函数,创建实例需要用到访问限制封装性是面向对象的一大特点,如果要内部属性不被外部调用,需要加上两个下划线这样就没办法直接通过实例来访问这个变量了因为这个时候,变量已经被隐式的变成了继承继承的一般写法为所有的类都继承于这个类。 包 python中包的引用是一个坑,经常出现这个文件夹的代码,引用不到另一个文件夹的代码,这个时候就必须要去更改环境变量,无论如何,总感觉不是一种优雅...

    LancerComet 评论0 收藏0
  • 浅谈JavaScript的面向对象和它的封装、继承、多态

    摘要:会造成内存浪费的问题构造函数继承声明父类声明子类生成实例组合式继承组合式继承是汲取了两者的优点,既避免了内存浪费,又使得每个实例化的子类互不影响。 写在前面 既然是浅谈,就不会从原理上深度分析,只是帮助我们更好地理解... 面向对象与面向过程 面向对象和面向过程是两种不同的编程思想,刚开始接触编程的时候,我们大都是从面向过程起步的,毕竟像我一样,大家接触的第一门计算机语言大概率都是C语...

    MAX_zuo 评论0 收藏0
  • 如何系统地自学 Python

    摘要:这里推荐一本书源码剖析源码剖析豆瓣这本书把源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对语言内存模型和指针有着很好的理解。   是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?   幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。   Python 的设计哲学之一就是...

    zgbgx 评论0 收藏0

发表评论

0条评论

only_do

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<