当当当,技术小E又来了!
经过前几次的基础贴的培训
相信很多同学对python的基础知识
已经有了一个简单的认识
那么下面我们来讲一讲
python面向对象程序设计。
我们在写程序的时候一般有两种方式:
函数式编程和面向对象式编程。
函数式编程的好处在于:
我们将一个方法给封装起来
这样就可以在接下来的
编程中随取随用了
而面向对象编程实际上可以说是
函数式编程的一个加强版
简单来说就是面向对象编程
将好多函数给放在一起了
然后用一个统一的方法去调用。
先来简单介绍一下
面向对象编程的格式:
那么上面这个程序就是
一个最简单的面向对象程序了
其中class是一个关键字,代表类
obo是使用的类名(类名可以随便起)
之后我们就看见了一个函数foo
那么在这里我们称之为方法
(记住在写方法的时候括号后面的
第一个参数一定要写self)
这样的话我们的类就写完了
这是一个最简单的类。
接下来我们就要去调用foo函数了
但是这个foo函数是写在类里面
的不能直接调用
需要找一个中间人
我们在上面那个例子中使用的
那个中间人叫ob
通过使用ob.foo()来调用函数。
我们管这个中间人叫做对象
现在大致明白这个面向对象的大致概念
可能会有同学问这个self到底是啥
我们知道这个对象是
根据类实例化出来的
在实际工作中
总不会只建立一个对象吧
这时候为了区分
对象在调用方法的时候
就会把自己给传回去
所以说这个self就是你使用的
那个对象自己
(就像是C++中的this指针)。
有些同学在学C语言或者
C++的时候接触过类
在这些语言的类里面
会有成员变量的东西
这里当然也有,
只不过我们直接使用self来定义
具体用法下面的代码已经给出:
那么以上就是面向对象程序设计
最为基础的部分了
接下来我们来讲一点更深入的
面向对象有三大特性:
封装,继承,多态
其中的封装部分我们
已经在上面讲过了
简而言之就是将方法和成员变量
全部都放进类里面
通过对象去调用
保证数据的安全和使用的方便性。
但是上面这个例子中的成员
变量定义的并不是很恰当
我们在这里进行一下修改。
先来讲一下构造方法:
当我们执行ob = obo() 这条语句时
实际上干了两件事
第一件事就是生成了一个对象
第二件就是通过对象
执行类中的一个方法
这个方法就是构造方法,
它有一个特定的名字:
将上述代码重新写了一下
注意到类里面有一个__init__函数了吗
那个就是构造方法。
它是在生成对象的时候自动执行的
我们可以将成员变量的
定义放在那里面。
当然因为是方法
所以同样可以往里面传入参数:
就像上面这个图里面这样
接下来我们来讲一讲继承
简单来说继承的意思是一个类从
另一个类那里把方法给调用过来
调用的那个类称为子类
被调用的类称为父类
将父类的类名放在子类
类名旁边的括号里
就可以实现继承
这样的话子类就可以使用
它父类的所有方法了。
先来看个例子:
如上图所示
类obo1将obo认作父类
这时候o虽然是obo1的对象
但是由于obo1有父类obo
所以就可以使用obo类里面的方法了。
上面我们讲完了继承
那么最后我们来看看多态:
在python里面,多态并不适用
咱们先来看一看在c语言当中
多态是怎么用的吧
我们知道在C语言中
当定义一个变量时
需要指定这个变量的类型
比方说整型,字符型,浮点型。
所以在定义函数的时候
形参前面必须要声明变量的类型
但是我们知道同一个函数有时候
需要处理不同种类的变量
于是多态就这样产生了:
在一个类里面产生了
多个名字相同的方法
但是传回去的参数类型不相同
这就是多态。
如下图所示
接下来我们回过头来看一下python
如果你认真看了前面基础部分的技术贴
就会发现python在定义数据变量时
是不需要声明前面的类型的
你给它赋什么样的值
它就是什么样的类型
那这样的话事情就变得简单了
在python的类里面我们只需要
写一个方法就可以了
形参的类型就视你传的实参来决定。
那么这次的技术贴就到这里了
面向对象的基础知识并不困难
希望同学们可以自己在电脑上
试一试以便更好地掌握哦!