面向对象的概念

面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。

随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。

面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。

1、面向对象的优点

通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。

面向对象能有效提高编程的效率,通过封装技术、消息机制可以像搭积木的一样快速开发出一个全新的系统。且面向对象的程序设计更易维护、易复用、易扩展。由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。

2、“面向过程”和“面向对象”的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

1、通过实例来理解面向过程与面向对象

例如五子棋,

面向过程的设计思路:

就是首先分析问题的步骤,

1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。

面向对象的设计思路:整个五子棋问题可以分为:

1、黑白双方,这两方的行为是一模一样的,

2、棋盘系统,负责绘制画面,

3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

理解:明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

面向对象语言的一些基本特征

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

方法:类中定义的函数。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:类变量或者实例变量,用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

局部变量:定义在方法中的变量,只作用于当前实例的类。

实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例如,Dog是一种Animal)。

实例化:创建一个类的实例,类的具体对象。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

Python语言的面向对象

和其它编程语言相比,Python在尽可能不增加新的语法和语义的情况下加入了类机制。

Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。

对象可以包含任意数量和类型的数据。

例如,我们有一个C++的定义类的例子:

其在Python中可以写成:

其中,self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。不过self 不是 Python 关键字,我们只是按照惯例将类的实例命名为self。

C++类的成员函数分为静态成员函数和普通成员函数(先不考虑访问限定)。通过类名可以直接访问静态的成员(变量和函数),但是不能访问普通的成员和函数,普通的函数和成员是属于对象的需要this指针才能调用,而类名是没有的。

对于Python,是没有静态非静态的概念的,Python的类当中定义的函数,通过实例调用就是实例的方法,通过类名调用就是一个函数。函数和方法不是一个类型。方法是被实例对象调用的,会被默认传入一个对象本身的引用给self参数,而通过类名调用的是从属于类的函数对象,这个函数在被调用的时候需要显示的传入实例对象作为参数。这两种调用的方式产生的结果是一样的。x.f() 等价于 MyClass.f(x)。

Python当中类是一个抽象的对象,实例是类对象。Python当中一切皆对象所以类本身也是对象,C++当中类可以是一段抽象的代码段,这里类就并不是对象,而是一个作用域。通过这个作用域只能访问到静态的信息。Python当中的类就是一个抽象对象,它描述整个类的抽象信息。

— — — — — — E N D — — — — — —

真格量化可访问:

https://quant.pobo.net.cn

真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887

往期文章:

Numpy处理tick级别数据技巧

真正赚钱的期权策略曲线是这样的

多品种历史波动率计算

如何实现全市场自动盯盘

AI是怎样看懂研报的

真格量化策略debug秘籍

真格量化对接实盘交易

常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法

如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

活用订单类型规避频繁撤单风险

真格量化回测撮合机制简介

如何调用外部数据

如何处理回测与实盘差别

如何利用趋势必然终结获利

常见量化策略介绍

期权交易“七宗罪”

波动率交易介绍

推高波动率的因素

波动率的预测之道

趋势交易面临挑战

如何构建知识图谱

机器学习就是现代统计学

AI技术在金融行业的应用

如何避免模型过拟合

低延迟交易介绍

架构设计中的编程范式

交易所视角下的套利指令撮合

距离概念与特征识别

气象风险与天气衍生品

设计量化策略的七个“大坑”

云计算在金融行业的应用

机器学习模型评估方法

真格量化制作期权HV-IV价差

另类数据介绍

TensorFlow中的Tensor是什么?

机器学习的经验之谈

用yfinance调用雅虎财经数据

容器技术如何改进交易系统

Python调用C++

如何选择数据库代理

统计套利揭秘

一个Call搅动市场?让我们温习一下波动率策略

如何用真格量化设计持仓排名跟踪策略

还不理解真格量化API设计?我们不妨参考一下CTP平台

理解同步、异步、阻塞与非阻塞

隐波相关系数和偏度——高维风险的守望者

Delta中性还不够?——看看如何设计Gamma中性期权策略

Python的多线程和多进程——从一个爬虫任务谈起

线程与进程的区别
皮尔逊相关系数与历史K线匹配

Python2和Python3的兼容写法
Python代码优化技巧

理解Python的上下文管理器

如何写出更好的Python代码?这是Python软件基金会的建议

评估程序化模型时我们容易忽视的指标

看看如何定位Python程序性能瓶颈

什么是Python的GIL

投资研究中的大数据分析趋势及应用

理解CTP中的回调函数

如何围绕隐含波动率设计期权交易策略

看看如何用Python进行英文文本的情感分析

算法交易的分类

Python编码的最佳实践总结

什么是波动率锥?如何用波动率锥设计期权策略?

期权的波动率策略与时间价值收集策略对比

期权用于套期保值和无风险套利

隐含波动率对期权策略的影响

卖出期权交易的风险管理原则和技巧

期权交易中的“大头针”风险

期权做市商策略简介

精细化您的交易——交易成本评估与交易执行策略

海外市场交易执行策略的实践

设计期权套期保值方案时应注意的问题

美式期权、欧式期权比较分析——定价与风险管理

构建您的AI时代武器库——常用的机器学习相关Python库

期权波动率“微笑曲线”之谜

运算任务愈发繁重,如何加速Python程序运行?

证券市场微观结构理论模型是什么

是瞬间成交还是漫长等待?——如何衡量市场流动性

波动率指数及其衍生品介绍

Python的异常处理技巧

Python中的阻塞、异步与协程

"香草"之外的更多选择——几种常见的路径依赖奇异期权

什么是CTP?——了解上期所CTP快速交易系统

了解季节性——以谷物和油籽为例

是前因还是后果?——在真格量化中进行格兰杰因果检验

Python导入模块的技巧

Python程序员常犯的十个错误

搜索数据泄露天机?——舆情指数与期货行情关联性分析思路

机器学习常见算法分类汇总

如何使用Data Pipeline 自动化数据处理工作?

CTP API的委托介绍和在真格量化中的订单流控制

高频交易对市场的影响

期货行情及其组织形式——以上期所为例

理解并行与并发

郑商所和大商所套利指令及在真格量化的实现

机器学习用于金融市场预测面临的挑战

高频交易中风险控制的常用措施

查询结果偏离预期?来了解CTP的报单函数及委托状态查询

Python中的ftplib模块

理解真格量化的Python编程范式

需要处理大量市场数据?来了解一下MySQL、HBase、ES的特点和应用场景

NumPy中的ndarray与Pandas的Series和DataFrame之间的区别与转换

Python中的scikit-learn机器学习功能库

什么是程序设计中的高内聚、低耦合?

Python的内存管理与垃圾回收机制

云服务中的容器技术

python交互界面实例_什么是“面向对象”程序设计以Python为例相关推荐

  1. python交互界面实例_什么是“面向对象”程序设计-以Python为例

    面向对象的概念 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理 ...

  2. 树莓派python交互界面实例_树莓派综合项目2:智能小车(二)tkinter图形界面控制...

    一.介绍 树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库--Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制 ...

  3. 树莓派python交互界面实例_玩转树莓派-RaspBerry,使用Python开发定制界面

    1 准备SD卡8G以上,16G更佳. 编译过程中,会耗用大量存储空间.一定在编译之前运行sudo raspi-config,选择expand file system扩展SD卡的分区. 如果空间不够,会 ...

  4. python交互界面实例_Python面向对象编程扑克牌发牌程序,另含大量Python代码!

    1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后, ...

  5. python交互界面数据分析_如何用 Python 和 Streamlit 做交互式数据分析产品?

    「本文参与少数派 2019 年度征文 + 效率有心得」 不用学前端编程,你就能用 Python 简单高效写出漂亮的交互式 Web 应用,将你的数据分析成果立即展示给团队和客户. 痛点 从我开始折腾数据 ...

  6. python的电脑推荐_推荐8款常用的Python GUI图形界面开发框架

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言. Python 的 UI 开发工具 ...

  7. python打开交互界面设计_老司机必备——用PyQt做一个有交互界面的妹子图爬虫...

    内容简介:老司机必备--用PyQt做一个有交互界面的妹子图爬虫 代码飙车,指日可待.今天的课程教大家结合PyQt和 Python 爬虫技术,做一个带有交互界面的妹子图网站爬虫程序. 一.实验简介 1. ...

  8. python交互界面制作_Python 如何编写交互界面?_后端开发

    c语言怎么实现三个数从小到大输出?_后端开发 方法:1.使用if语句对数字x与y进行比较,若x>y则交换x和y的值:2.使用if对x与z进行比较,若x>z则交换x和z的值:3.使用if对y ...

  9. python图形界面教程_图形教程

    python图形界面教程 众所周知,我们可以借助Java库制作游戏,这些库为我们提供制作游戏所需的图形. 因此,今天我将开始一个关于Java图形的非常新的部分. 我之前曾发表过有关如何制作所得税计算器 ...

最新文章

  1. 代码写的烂,经常被同事怼,教你一招!
  2. JVM 面试题 87 题详解
  3. 中小企业信息化,“轻”和“快”是方向
  4. C++字符串完全指南(2) - 各种字符串类- CRT类
  5. 大话存储pdf 百度网盘_学用系列|亲身体验百度网盘内测在线文档,有遗憾也有期待...
  6. TensorFlow学习笔记(一)——入门资源整理
  7. C++ 结构体内存对齐
  8. 思维导图设计测试用例
  9. 优秀宝宝都有的6个特点
  10. avformat_seek_file使用
  11. Skype for Business Server与Microsoft Teams的长期共存模式
  12. 苹果放弃Intel基带应是大概率事件
  13. viewers.js 图片查看插件使用说明-vue中引用
  14. 程序员为什么被叫做“码农”,我来和大家聊一聊
  15. 微信小程序实例:实现tabs选项卡效果
  16. PS A11选区和选框工具
  17. 真c++ 从二叉树到红黑树(6)之红黑树RedBlack
  18. Windows 环境JDK环境配置
  19. 非常详细的Echarts介绍
  20. tplogin服务器未响应,TP-Link路由器的管理页面打不开怎么办?

热门文章

  1. where和which的区别【定于从句】
  2. 近1、2年来设计的几个飞机构型
  3. python微信api会封号吗_python调用微信api发告警message
  4. 【C#】数据结构汇总
  5. ubuntu版本系统升级
  6. Go设计模式(17)-享元模式
  7. 使用URL 启动unity Andriod APP并传递参数
  8. 润和软件荣获华为开发者大会2022鸿蒙使能贡献奖
  9. linux 误删nginx.conf文件恢复
  10. drawboard pdf拆分文件_Drawboard PDF(pfd处理软件)V5.5.20.1 最新版