详解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字符串对象的实现
Dec 24 Python
Django的信号机制详解
May 05 Python
Python正则捕获操作示例
Aug 19 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
Python简易计算器制作方法代码详解
Oct 31 Python
python如何实现复制目录到指定目录
Feb 13 Python
Django values()和value_list()的使用
Mar 31 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 Python
使用numpy nonzero 找出非0元素
May 14 Python
Python趣味挑战之教你用pygame画进度条
May 31 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
php延迟静态绑定实例分析
2015/02/08 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
XP折叠菜单&仿QQ2006菜单
2006/12/16 Javascript
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
Python3.2模拟实现webqq登录
2016/02/15 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
Django框架模板的使用方法示例
2019/05/25 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
合伙经营协议书
2014/04/18 职场文书
金融事务专业求职信
2014/04/25 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
先进个人材料怎么写
2014/12/30 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python