前言
Python 由于其易上手、丰富的第三方库支持等优点,已经作为一种标准编程语言应用在金融数据的量化分析中。尽管 Python 上手很快,但是当我们着手搭建一个系统时,需要考虑软件的移植、扩展和维护。作为一门面向对象的语言,掌握 Python 的面向对象编程思维和方法至关重要。
本场 Chat 以股票量化交易中经典的动量策略为例,从面向对象的思维、方法、过程和实现等角度介绍用 Python 面向对象思维编程的关键点。
本场 Chat 主要内容:
概述 Python 面向对象机制
如何编写一个完整的类
由类到实例的过程及其区别
类的继承和组合方法的应用
以动量策略为场景的应用
本场 Chat 适用于 Python 入门级的同学,从中可以掌握如何使用 Python 面向对象去编程。
概述 Python 面向对象机制
目前编程的思想主要包括面向过程和面向对象这两种。面向过程是建立在“过程”概念上来指导软件编程的思想,比如在学习和工作中,当我们去完成某项任务时,会罗列出完成这件事情的若干个步骤,假如其中某一步骤特别复杂时,又可以将它细化为若干个子步骤,以此类推,直到问题解决。面向对象(OOP,Object-Oriented Programming)是一种建立在“对象”(object)概念上来指导软件开发的方法,认为客观世界由各种对象组成,任何事物都是对象。
当程序简单、规模较小的场景下,面向过程编程使得程序流程更加清晰,但是当面对复杂程序时,面向对象易维护、易复用、易扩展的优点就体现了淋漓尽致了。因此,面向对象语言是当前计算机技术发展到一定阶段的产物,从面向过程过渡到面向对象的编程方法也是大势所趋。
Python 是一门面向对象的编程语言,因此在 Python 中一切皆为对象。在面向对象体系中主要存在“类”和“实例”、“父类”和“子类”这两种关系。
在介绍“类”和“实例”及“父类”和“子类”的关系前,我们先介绍下“类”和“抽象类”。我们知道“类”是从一堆对象中以抽象的方式把相同的特征归类得到的,由于“类”本身也是对象,那么更进一步抽象可以得到“抽象类”,两者的区别在于前者是从现实对象抽象而来的,后者是基于类抽象而来的。
比如“科比”和“梅西”这两个对象抽象得到的共同的特征是“运动员”,那么“运动员”作为“科比”和“梅西”的一个“类”,同理“马云”和“马化腾”这两个对象抽象得到的共同的特征是“企业家”,“周星驰”和“里昂那多”这两个对象抽象得到的共同的特征是“演员”。将得到的“运动员”、“企业家”、“演员”这三个“类”更进一步抽象得到的共同的特征是“人”,那么“人”作为“运动员”、“企业家”、“演员”这三个“类”的“抽象类”。