面向对象OOP(Object Oriented Programing)是软件开发方法。面向对象地概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互世界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程艺术发展到一定阶段后的产物。
以Python为例,Python是一种面向对象的编程语言,但是Python与C++一样,还支持面向过程的程序设计。在Python中完成可以使用函数,模块等方式来完成工作。担当使用Python编写一个较为庞大的项目时,则应该考虑使用面向对象的方法,以便更好地对项目进行管理。
面向对象程序设计是从20世纪90年代开始流行的一种编程方法,强调对象的“抽象”、“封装”、“继承”、“多态”。面向对象程序设计方法的基本思想是将任何事物都当作对象、是其所属对象类的一个实例。对于复杂的对象则将其划分成为简单的对象。由这些简单的对象以某种方式组合而形成复杂的对象。每一个对象都有其相对应的对象类。属于同一对象类的对象具有相同的属性以及操作方法等。
对象以对象类的形式将其内部的数据或者方法封装。对象与对象之间只是相互传递数据,而不能访问其他对象的内部。对象的内部相对于其他对象来说是不可见的。不同的对象类之间可以通过继承的形式来同有其他对象的属性个方法等,而形成父子关系。面向对象程序设计方法的基本过程如下。
类是面向对象程序设计的基础。类具有抽象性、封装性、继承性和多态性。
每个类都具有自己的属性和方法。类的属性实际上就是类的内部变量。而类的方法,则是在类内部定义的函数。对象是具体的事物,是实例化后的类。每个对象的属性值可能不一样,但所有由同一类实例化得来的对象都拥有共同的属性和方法。在程序中由类实例化生成对象,然后使用对象的方法进行操作,完成任务。一个类可以实例化生成多个对象。
在python中类的定义与函数的定义类似,不同的是,类的定义使用关键字“class”。与函数定义相同,在定义类的时候也要使用缩进以表示缩进的语句属于该类。
class ClassName: '类的帮助信息' #类文档字符串 class_suite #类体
类的帮助信息可以通过ClassName.__doc__查看。class_sutie由类成员,方法,数据属性组成。与函数定义相同,使用类之前必须先定义类。类的定义一般放在脚本的头部。类定义之后就产生了一个名字空间,与函数类似。在类内部使用的属性,相当于函数中的变量名,还可以在类的外部继续使用。类的内部与函数的内部一样,相当于一个局部作用域。不同类的内部也可以使用相同的属性名。
实例:
class Student: '一个学生的基类' def __init__(self, name ,age): self.name = name self.age = age def show(self): print("姓名:", self.name) print("年龄:", self.age)
这是一个学生的基类,由该基类可以实例化多个学生对象。第一个是构造方法,被称类的构造函数或者初始化方法,当创建了这个类的实例就会调用该方法。self代表类的实例,self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。self代表类的实例,而非类。类在定义之后必须先实例化才能使用。类的实例化与函数的调用相似,只要使用类名加圆括号的形式就可以实例化一个类。类的实例化之后会产生一个对象。一个类可以实例化多个对象,对象与对象之间并不相互影响。类实例化以后可以使用其属性和方法等。定义一个学生的基类,然后实例化两个对象的例子如下:
类的属性实际上是类内部的变量。每一个类都具有自己的属性和方法。属性和方法是面向对象程序设计所独有的概念。属性是类所封装的数据,而方法则是类对数据进行的操作。使用"."来访问对象的属性。
class Student: '一个学生的基类' def __init__(self, name, age): self.name = name self.age = age def show(self): print("名字:", self.name) print("年龄:", self.age) if __name__ == "__main__": A = Student("王明", 19) B = Student("张三", 20) print(A.name)
你也可以添加,删除,修改类的属性
a.grade = "8年级" a.grade = "9年级" del a.grade
面向对象的变成所带来的好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。通过继承创建的新类称为子类或者派生类,被继承的类称为基类,父类或者超类。继承语法:
class 派生类名(基类名): ...
在python中继承的一些特点:
如果在继承元组中列了一个以上的类,那么它就被称作“多继承”。