python中什么是面向对象


Posted in Python onJune 11, 2020

用面向对象的思维解决问题的重点

当遇到一个需求的时候不用自己去实现,如果自己一步步实现那就是面向过程;应该找一个专门做这个事的人来做。

面向对象(object-oriented ;简称: OO) 至今还没有统一的概念 我们可以把它定义为: 按人们 认识客观世界的系统思维方式,采用基于对象(实体) 的概念建立模型,模拟客观世界分析、设 计、实现软件的办法。

面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。

类和对象的概念

类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用;

特征被称为属性;

行为被称为方法。

对象

对象是由类创建出来的一个具体存在,可以直接使用;

由哪一个类创建出来的对象,该对象就具有在那一个类中定义的属性和方法;

类和对象的关系

类就是创建对象的模板,应该先有类,在有对象;

一个类可以创建多个对象,不同对象之间属性可能各不相同;

类中定义了什么方法,对象中就有什么属性和方法,不可能少,但可能多,因为对象可以自己在类外增加属性

定义简单的类

面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了。

定义只包含方法的类

在python中药定义一个只包含方法的类,语法格式如下:

class 类名:
  def 方法1(self, 列表参数):
    pass
  def 方法2(self, 列表参数):
    pass

方法的定义格式和之前学习的函数几乎一样;

区别在于第一个参数必须是self;

注意,类名的命名规则要符合大驼峰命名法;

创建对象

当一个类定义完成后,要使用这个类来创建对象,语法格式如下:

对象变量 = 类名()

第一个面向对象程序

class Cat:
  """定义一个猫类"""
  def eat(self):
    print("小猫爱吃鱼")

  def drink(self):
    print("小猫要喝水")
    
tom = Cat()
tom.eat()
tom.drink()

知识点扩展:

面向对象设计与面向对象编程的关系

面向对象设计(OOD)不会特别要求面向对象编程语言。事实上,OOD 可以由纯结构化语言来实现,比如 C,但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更多的努力。当一门语言内建 OO 特性,OO 编程开发就会更加方便高效。另一方面,一门面向对象的语言不一定会强制你写 OO 方面的程序。例如 C++可以被认为“更好的C”;而 Java,则要求万物皆类,此外还规定,一个源文件对应一个类定义。然而,在 Python 中,类和 OOP 都不是日常编程所必需的。尽管它从一开始设计就是面向对象的,并且结构上支持 OOP,但Python 没有限定或要求你在你的应用中写 OO 的代码。OOP 是一门强大的工具,不管你是准备进入,学习,过渡,或是转向 OOP,都可以任意支配。考虑用 OOD 来工作的一个最重要的原因,在于它直接提供建模和解决现实世界问题和情形的途径。

到此这篇关于python中什么是面向对象的文章就介绍到这了,更多相关python中什么是面向对象内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
bat和python批量重命名文件的实现代码
May 19 Python
python 性能优化方法小结
Mar 31 Python
基于Django的ModelForm组件(详解)
Dec 07 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
python实现银联支付和支付宝支付接入
May 07 Python
python3.6生成器yield用法实例分析
Aug 23 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 #Python
python新手学习可变和不可变对象
Jun 11 #Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
Jun 11 #Python
什么是python的id函数
Jun 11 #Python
Keras:Unet网络实现多类语义分割方式
Jun 11 #Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 #Python
Keras 快速解决OOM超内存的问题
Jun 11 #Python
You might like
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
python 矩阵增加一行或一列的实例
2018/04/04 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
python之列表推导式的用法
2019/11/29 Python
python输出数学符号实例
2020/05/11 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
酒店七夕情人节活动策划方案
2014/08/24 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
毕业生党员个人总结
2015/02/14 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书