本文摘自php中文网,作者silencement,侵删。

面向对象编程简单来说就是基于对 类 和 对象 的使用,所有的代码都是通过类和对象来实现的编程就是面向对象编程!
面向对象的三大特性:封装、继承、多态
首先创建一个类
1 2 3 4 5 | #使用class创建一个School类,类中有个student方法
class School:
def student(self):
pass
a1=School()
|
一、封装
1、封装:将某些内容先封装到一个地方,等到需要的时候再去调用
1 2 3 4 | 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间接调用
通过对象直接调用
1 2 3 4 5 6 7 | 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.age
print a2.name,a2.age#执行结果: zhangsan 18
lisi 18
|
通过self间接调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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,a2
a1=School("zhangsan",18)
a2=School("lisi",18)
#执行类中的方法时,通过self间接调用被封装的内容
a1.student()
a2.student()
#执行结果:
#name:zhangsan,age:18
#name:lisi,age:18
|
二、继承
1、继承:既派生类(子类)可以继承基类(父类)的方法,我们可以将多个类共有的方法提取到父类当中,这样子类仅需继承父类而不必一一实现每个方法
在类名后面括号中写上另一个类,表示继承了那个类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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=name
class SchoolB(SchoolA): #SchoolB继承SchoolA
def __init__(self,name):
self.name=name
#创建对象a1
a1=SchoolA("zhangsan")
a1.classroom()
#创建对象a2
a2=SchoolB("lisi")
a2.classroom()
#执行结果:
# zhangsan去教室
# lisi去教室
|
在上面代码中我们可以看到,在SchoolA和SchoolB中都没有classroom方法,但由于SchoolB继承了SchoolA,而SchoolA又继承了School,所以他们创建对象后都能
调用School中的classroom方法。
2、多继承
在python中,类还可以继承多个类,在继承多个类时,他对类中的函数查找有两种方式
深度优先:类是经典类时,多继承情况下,会按照深度优先方式查找
广度优先:类是新式类时,多继承情况下,会按照广度优先方式查找
(在python3.x中)都默认为广度优先,但还是可以了解一下两个的区别,新式类:当前类或者基类继承了objiect类就叫新式类,否者就是经典类。
以上就是python如何面向对象编程的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Python实现发短信的方法介绍(附代码)
Python怎么调试?
Python将多个映射合并为单个映射的方法与分析(代码实例)
Python代码是什么语言
Python实现代码行数统计工具的功能(实例)
Python爬虫入门学习什么
如何修改Python字典内的值?2种修改Python字典内的值方法总结
Python中回调的含义详解
web自动化测试(一)selenium 3使用系列问题集
正则表达式%是什么意思,本文通过Python正则表达式例子详解
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » python如何面向对象编程