写在之前
如果你是第一次听说 “类” 这个概念,把它单独的作为一个名词你可能会觉得怪怪的,总觉得前面缺少了修饰成分。其实,“类” 是由 class 翻译过来的,它对应的英文单词是 class。
基本概念
不论学什么,概念都是非常重要的,想要学得某学科的语言,就必须使用相应的概念。在学 “类” 的时候,我们除了 “类” 还要知道什么是 OOP,即面向对象编程。所以我们先来认识几个 “术语”,这些术语跟现实生活中的某些名字可能相像,但是代表的不同的含义。
1.问题空间
知道什么是 “问题空间” 是一个搬砖的必备基础,我们下面来看一下《维基百科》中关于它的定义:
问题空间是问题解决者对一个问题所达到的全部认识状态,它是由问题解决者利用问题所包含的信息和已储存的信息主动构成的。
一个问题一般由三个方面来定义:初始状态(开始时的不完全的信息),目标状态(你希望获得的信息或状态),操作(从初始状态到目标状态所采取的步骤)。这三个部分加在一起定义了问题空间。
2.对象
这里的 “对象” 不是你的 “对象”,英文单词是 Object,至于为什么翻译成对象我们不去追究,我们需要知道的是 “Python 中的一切都是对象”,不管你是字符串,函数还是类,都是对象。
那你可能问了,Python 都是对象有什么用么?简直是太有用了,这说明 Python 是面向对象编程的!
大佬们对于对象的定义相当高深:一个对象要有自己的状态,行为和唯一的标识;所有相同类型的对象所具有的结构和行为在它们共同的类中被定义。大佬们的话确实有水平,但是这个定义对于初学者来说可能不太好理解。
其实简言之,对象应该具有属性(就是大佬们说的状态),方法(就是大佬们说的行为)和标识,但是标识是自动就完成的,所以我们一般不用管它,所以一个对象主要就是有属性和方法,属性是说这个东西是什么,方法是说这个东西能做什么。
3.面向对象
面向对象(OOP),是现在编程的主流。面向对象编程可以看作是一种在程序中包含各种独立且又互相调用的对象的思想,这个和传统正好相反,传统的思想主张将程序直接看作是一系列对计算机下达的指令,而面向对象编程中的每一个对象都应该能够接受数据,处理数据并且能将数据传达给其它对象,因此它们每一个都可以看作是一个小型的机器,即对象。
目前来说面向对象编程推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。当我们提到面向对象的时候,它不仅仅是指一种程序设计方法,更多意义上是一种程序开发方式。
4.类
在目前所流行的高级编程语言中,“类” 是必须要有的,我们先来看《维基百科》中的定义:
在面向对象编程中,类 (class) 是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的属性和方法。
对于类更严格点的定义是由某种特定的元数据所组成的内聚的包。它描述了一些对象的行为规则,而这些对象就被成为该类的实例。类有接口和结构,接口描述了如何通过方法与类及其实例互相操作,而结构描述了一个实例中数据如何划分为多个属性。
支持类的编程语言在支持与类相关的各种特性方面都多多少少有一些微妙的差异。大多数都支持不同形式的类继承。类的出现,为面向对象编程的三个最重要的特性(封装,继承,多态)提供了实现的手段。
看到这里,你或许有这么一个认识,要面向对象编程就要用到类,虽然不是很严格,但是我们可以这么说,当然了,反过来的话是不可以的。
写 “类”
类是对某一群具有同样属性和方法的对象的抽象,比如长翅膀会飞的的生物,我们把它们统一称为 “鸟”。
这里我们以 “漂亮小姐姐” 为例,我们要定义类,就要抽象的找出共同的方面,我们用 class 来声明,然后后面跟着类的名字:
class小姐姐:
pass
我们在这里先不用 Python 来写,而是用不太像伪代码的方式来表示,主要是为了让大家先了解一下什么是什么:
class小姐姐:
皮肤 = 白色
发色 = 黑色
唱歌()
跳舞()
我们定义了一个叫小姐姐的类,后面没有带括号的是属性,带括号的是方法,其中的属性和方法,默认是所以的小姐姐都具有,这个类仅仅是对小姐姐们的通常抽象,并不是指某个具体的谁谁谁。
对于一个具体的小姐姐,比如西施,她就是上面定义的小姐姐这个类的具体化,这在编程中称为 “小姐姐” 类的实例:
西施 = 小姐姐()
用上面的方式就是将 ”小姐姐“ 类实例化了,所谓的实例,就是一个具体的东西。对于西施这个实例,就可以具体化一些属性,比如发色,还可以用一些具体的方法,比如唱歌,通常用 “.” 的方式,比如 西施.皮肤,就得到白色。
写在最后
当然还有很多别的用法,我在今天不过多的做介绍,现在只是让你对类的属性和方法有个初步的认识,我们明天再真刀真枪的写代码。
老话常说 “行百里路者半九十”,如果你坚持的从我刚开始写文章到看到这里,相信你对 Python 已经有了初步的感觉,而这个新的篇章 “类” 会让你在 Python 学习的过程中再上一个台阶,所以一定要有耐心。
所以。。如果你觉得写的还可以的话,欢迎点赞转发加关注。明天见。
The end。
话不多说走一波。。
领取专属 10元无门槛券
私享最新 技术干货