一、面向对象简介
在学习面向对象之前,我们先来了解一个概念
函数范式
编程是 程序 员 用特定的语法+数据结构+算法 组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,即为编程范式。 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式。 两种最重要的编程范式分别是面向过程编程和面向对象编程。
面向过程编程(Procedural Programming)
面向过程其实就是最纯粹的流程过程,程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 。这种结果在小型应用中得以大力推广,但是由于编码的复杂度越来越高,人们在思考,如何才能更加搞笑的管理代码呢?
面向对象编程(OOP)
现实世界中任何东西都可以叫做对象,面向对象,OOP编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。
定义一个简单的类(class)
在Python中,定义类是通过class
关键字,class
后面紧接着是类名,类名通常是大写开头的单词,紧接着是('要继承的类名')
,表示该类是从哪个类继承下来的,可以有多个父类(基类),通常如果没有合适的继承类,就使用object
类,这是所有类最终都会继承的类,也可以不写。
>>> import sys >>> >>> class lyshark(object): def __init__(self,name,age): self.name=name self.age=age >>> temp=lyshark("LyShark",22) >>> >>> temp <__main__.lyshark object at 0x03B61FB0> >>>
上面的这个__init__()叫做初始化方法(或构造方法), 在类实例化时,它会进行一些初始化的动作,所以我们这里写的__init__(self,name,age)就是要在创建一个角色时给它设置这些属性。
self首先会开辟一块内存空间,然后会将传入的数据复制给这块开辟的内存空间,从而实现外部的参数传递到类的内部去!
二、面向对象之封装
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
封装,封装一般是通过在类中封装数据,而通过对象或者self获取。和其他面向对象的语言类似,也是通过构造函数来进行数据封装。
封装,说白了就是,将一些功能相近的函数写在一起,方便我们的调用,与维护。
下面是类的基本声明与调用格式(使用公有属性封装)
import sys #===========================类的定义============================ class lyshark: def __init__(self,name,age): #构造函数,初始化数据 self.name=name #封装的数据成员 self.age=age def my_print(self): #封装的成员函数 print("我的名字是:%s 我的年龄是:%s"%(self.name,self.age)) #=============================================================== temp=lyshark("lyshark","22") #类的实例化,将数据传入类中 temp.my_print() #调用类中的指定方法 print(temp.name) #直接调用类中的数据成员 #=============================================================== #改变类中的数据成员的数值,继续调用看看反应。 temp.name="xxxoooo" temp.my_print()
另一种封装方法(使用私有属性封装)私有属性只有类的内部可以调用