python编程入门之十一:类和对象

第十一章:类和对象

相信在前面十章的基础讲解之后,认真学习过的同学已经对python掌握的有点头绪了,但你要是认为python原来就这么简单,就这点东西,那我只能说这是小巫见大巫了。有了前面的程序基础,今天我再给大家介绍一个有意思的知识点,这个姿势可以算是python里面的重难点了。

11.1 给大家介绍对象

(1)专业点的解释:
大家之前应该都听说过封装的概念。
把乱七八糟的数据扔进一个列表,这是一种封装,是数据层面的封装。
把常用的代码段打包成一个函数,这也是一种封装。
对象也是一种封装的思想,只不过更先进一点,它是把数据和代码都封装在了一起。

(2)生动一点的解释:
打个比方:乌龟是真实世界的一个对象,那么我们通常怎么描述它呢?是不是把它分成两个部分来说:
1,从静态特征来描述:绿色的,四条腿,有外壳,还有个大嘴。
2,动态行为来描述:会爬,如果你追它,还会跑,它还会咬人,还不松嘴。
在这里插入图片描述
如果把人当成一个对象,那大家会在哪几个方面来描述他呢?
在这里插入图片描述

11.2 对象=属性+方法

大致了解了我们平时所说的面向对象编程中的对象是一个什么概念,我们再来仔细的品品对象到底是个什么东西。
我们在上面的例子中引用了乌龟的静态特征动态行为来简单说明了一下什么是对象,那么对象=属性+方法是个什么意思呢?
一个对象的特征称为“属性”,一个对象的行为称为“方法”。是不是和上面对乌龟的描述对应起来了?
那我们把“乌龟”写成代码,将会是下面这个样子的:

class Turtle:
	# python中类名约定首字母大写
	# 特征的描述称为“属性”,在代码层次看就是变量。
	color = 'green'
	legs = 4
	mouth = "大嘴"

	# “方法”实际就是函数,通过调用函数来完成某些工作。
	def climb(self):
		print("我正在努力的向前爬。。。")
	def run(self):
		print("我正在努力的向前跑。。。")
	def bite(self):
		print("咬死你,咬死你。。。")
	def sleep(self):
		print("困了,困了,晚安,Zzzz~")
		

以上的这段代码定义了对象的“属性”和“方法”。但还并不是一个完整的类,将定义的这些称为类(Class)。需要使用类来创建一个真正的对象,这个对象就叫做这个类的实例对象(Instance Object)。

   对象 + 属性
	|
	|
	类
	|
	|(实例化)
	|
   实例化对象

如果不好理解,那我就给大家举个例子:
盖房子,是不是要先有一个图纸,但只有一个图纸你能住进去吗?不能,显然图纸只能告诉我们房子是什么颜色的面积多大,怎样去建造。另外,一张图纸是不是能盖出许许多多一样的房子。
在这里插入图片描述

11.3 self是什么?

细心的同学可能会发现每一个类的方法里面都有一个self参数,但是这个self是做什么用的呢?如果同学们之前接触过C++,那么你很容易的可以将其对号入座,python的self其实就是相当于C++的this指针。
我们再做一个形象的比喻,如果说类是“图纸”,实例对象是“房子”,那么这个self就相当于每一个房子自己的钥匙,我们之前说过根据一个图纸可以盖出很多相似的房子,但是每个房子自己的钥匙不一样,相应的钥匙只能开对应的房门。
python由同一个类可以生成无数的对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,那么python就可以知道该操作哪一个对象的方法了。
通过一个例子感受一下:

class Ball:
	def setName(self,name):
		self.name = name
	def kick(self):
		print("我是%s,噢~谁踢我?" % self.name)

a = Ball()
a.setName("足球")
print(a.kick())
--》我是足球,噢~谁踢我?

b = Ball()
b.setName("篮球")
print(b.kick())
--》我是篮球,噢~谁踢我?

现在总结一下,我们这一章节主要讲解的就是什么是对象,以及构成对象的类。那么什么是对象呢?
(1)就是包含属性和方法的一个数据和函数的封装。
(2)属性就相当于变量,方法就相当于函数。
(3)类只是构成对象的一张图纸。
(4)实例对象就是通过图纸构造的真实的事物。
(5)self相当于打开相应实例对象的钥匙,指向自身的方法。

猜你喜欢

转载自blog.csdn.net/qq_37744263/article/details/83088682