PHP前端开发

python如何面向对象编程

百变鹏仔 1个月前 (01-23) #Python
文章标签 面向对象

面向对象编程简单来说就是基于对 类 和 对象 的使用,所有的代码都是通过类和对象来实现的编程就是面向对象编程!

面向对象的三大特性:封装、继承、多态

首先创建一个类

#使用class创建一个School类,类中有个student方法class School:    def student(self):        passa1=School()

一、封装

立即学习“Python免费学习笔记(深入)”;

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类就叫新式类,否者就是经典类。