详解Python:面向对象编程


Posted in Python onApril 10, 2019

面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度

python和java都是面向对象的语言。面向对象编程的特点数据封装、继承和多态

1.类和实例

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
在python中,定义类同样也是使用class关键字,class后面紧跟着的是类名,需要开头大写,之后的括号里表示的是继承的哪个类,即它的父类。

class Student(object):
  pass

我们可以自由地给这个变量绑定属性

>>>nick.name = 'Liu Ling Hao'
>>>nick.name
'Liu Ling Hao'

而之后定义的不同的函数则是方法。总结来说对象=属性+方法
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。此时就需要用到比较特殊的__init__方法。(int 前后各有两个下划线)
__init__方法的第一个参数永远是self,表示创建的实例本身。

class Student(object):
  def __init__(self, name, score):
    self.name = name
    self.score = scor
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59

当有了__init__方法之后,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数

2.封装,继承和多态

面向对象编程的一个重要特点就是数据封装。
就像上面例子中的name和score,我们可以直接在类的内部定义的函数去访问,,比如可以添加一个数据或者对于一个列表进行排序,我们可以实现,但是我们并不知道它的内部是通过如何调节而实现的。

当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

继承的好处就是获得了父类的全部功能,对于子类而言,可以在父类的基础上接着写,更加方便

class Person(object):
  def idea(self):
    print('study is happy')
class Liu(Person):
  pass
liu =Liu()
liu.idea

study is happy

当然子类如果有和父类同样的方法时会自动覆盖掉父类的

多态:不同对象对同一方法响应不同的行动

>>>class Nick1:
  def name(self):
     	 print("我是1")
>>>class Nick2:
  def name(self):
  		 print("我是2") 
>>>a = Nick1()
>>>b = Nick2()
>>>a.name
我是1
>>>b.name
我是2

使用的函数名虽然一样但是实现并不一样。

def run(animal):
  animal.run()
  animal.run()
  >>> run(Animal())
Animal is running...
Animal is running...
>>> run_twice(Dog())
Dog is running...
Dog is running...

多态的好处就是,当我们需要传入Dog或者其它动物时,我们只需要接收Animal类型就可以了,因为Dog都是Animal类型,然后,按照Animal类型进行操作即可。由于Animal类型有run()方法,因此,传入的任意类型,只要是Animal类或者子类,就会自动调用实际类型的run()方法,这就是多态

以上所述是小编给大家介绍的Python面向对象编程详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
实例解析Python中的__new__特殊方法
Jun 02 Python
浅析使用Python操作文件
Jul 31 Python
python dataframe 输出结果整行显示的方法
Jun 14 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
自定义django admin model表单提交的例子
Aug 23 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
jupyter notebook 多行输出实例
Apr 09 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
Python实现封装打包自己写的代码,被python import
Jul 12 Python
Python 创建TCP服务器的方法
Jul 28 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
5款Python程序员高频使用开发工具推荐
Apr 10 #Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 #Python
Python将json文件写入ES数据库的方法
Apr 10 #Python
pycharm创建一个python包方法图解
Apr 10 #Python
Python socket模块实现的udp通信功能示例
Apr 10 #Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 #Python
一个可以套路别人的python小程序实例代码
Apr 09 #Python
You might like
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
php短域名转换为实际域名函数
2011/01/17 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
javascript使用call调用微信API
2014/12/15 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
pycharm 使用心得(五)断点调试
2014/06/06 Python
在Python中编写数据库模块的教程
2015/04/29 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
Django框架封装外部函数示例
2019/05/28 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
如何利用python读取micaps文件详解
2020/10/18 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
2014全国两会大学生学习心得体会
2014/03/10 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
张丽莉观后感
2015/06/16 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
企业团队精神心得体会
2016/01/19 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python