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 除法小技巧
Sep 06 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python数据挖掘需要学的内容
Jun 23 Python
Python PyCharm如何进行断点调试
Jul 05 Python
python+pygame实现坦克大战
Sep 10 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
opencv3/C++图像像素操作详解
Dec 10 Python
Python-openCV读RGB通道图实例
Jan 17 Python
Python实现点云投影到平面显示
Jan 18 Python
python实现PCA降维的示例详解
Feb 24 Python
Python 如何测试文件是否存在
Jul 31 Python
pandas针对excel处理的实现
Jan 15 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
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
[04:03][TI9趣味短片] 小鸽子茶话会
2019/08/20 DOTA
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
Python计算一个文件里字数的方法
2015/06/15 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Selenium定位元素操作示例
2018/08/10 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
绩效管理实施方案
2014/03/19 职场文书
出售房屋协议书范本
2014/10/06 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
人事局接收函
2015/01/31 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电