面向对象编程简单来说就是基于对 类 和 对象 的使用,所有的代码都是通过类和对象来实现的编程就是面向对象编程!
面向对象的三大特性:封装、继承、多态
首先创建一个类
#使用class创建一个school类,类中有个student方法class school: def student(self): passa1=school()
一、封装
1、封装:将某些内容先封装到一个地方,等到需要的时候再去调用
class school: def __init__(self,name,age): #构造方法,创建对象是执行 self.name=name self.age=age#创建对象a1,a2a1=school("zhangsan",18)a2=school("lisi",18)
上面代码实现的就是封装的功能,把各自的name和age分别封装到了self的name和age属性中,就等于被封装到了对象a1和a2中
类中定义的函数叫做方法,带有__init__的函数称为构造方法,在创建a1,a2对象时会自动执行。
2、调用:调用有两种方式,通过对象直接调用和通过self间接调用
通过对象直接调用
class school: def __init__(self,name,age): self.name=name self.age=age def student(self): print("name:%s,age:%s"%(self.name,self.age))#创建对象a1,a2a1=school("zhangsan",18)a2=school("lisi",18)print a1.name,a1.ageprint a2.name,a2.age#执行结果: zhangsan 18 lisi 18
通过self间接调用
class school: def __init__(self,name,age): self.name=name self.age=age def student(self): print("name:%s,age:%s"%(self.name,self.age))#创建对象a1,a2a1=school("zhangsan",18)a2=school("lisi",18)#执行类中的方法时,通过self间接调用被封装的内容a1.student()a2.student()#执行结果:#name:zhangsan,age:18#name:lisi,age:18
二、继承
1、继承:既派生类(子类)可以继承基类(父类)的方法,我们可以将多个类共有的方法提取到父类当中,这样子类仅需继承父类而不必一一实现每个方法
在类名后面括号中写上另一个类,表示继承了那个类
class school: def __init__(self,name,age): self.name=name self.age=age def student(self): print("name:%s,age:%s"%(self.name,self.age)) def classroom(self): print("%s去教室"%self.name)class schoola(school): #schoola继承school def __init__(self,name): self.name=nameclass schoolb(schoola): #schoolb继承schoola def __init__(self,name): self.name=name#创建对象a1a1=schoola("zhangsan")a1.classroom()#创建对象a2a2=schoolb("lisi")a2.classroom()#执行结果:# zhangsan去教室# lisi去教室
在上面代码中我们可以看到,在schoola和schoolb中都没有classroom方法,但由于schoolb继承了schoola,而schoola又继承了school,所以他们创建对象后都能
调用school中的classroom方法。
2、多继承
在python中,类还可以继承多个类,在继承多个类时,他对类中的函数查找有两种方式
深度优先:类是经典类时,多继承情况下,会按照深度优先方式查找
广度优先:类是新式类时,多继承情况下,会按照广度优先方式查找
(在python3.x中)都默认为广度优先,但还是可以了解一下两个的区别,新式类:当前类或者基类继承了objiect类就叫新式类,否者就是经典类。
以上就是python如何面向对象编程的详细内容。