本系列内容所用Python版本为anaconda,直接浏览器搜索下载安装即可!
前面内容我有多次提到过对象这个概念,今天我想专门出一期内容,浅谈一下Python的对象这一基础概念,并谈谈我对面向对象编程这一编程思想的理解,希望对后续内容的学习能起到一点帮助。
一、Python对象
简单来说对象就是具体的实例。像字符串'lcm',当他被创建的时候,他就是一个字符串对象,是实际存在的,并不是抽象的
那么对象是怎么来的
首先要搞明白用于描述对象特征的数据信息称为该对象的属性,而存取属性的函数叫做方法,是该对象与外界沟通的接口,具有相同属性和方法的对象构成类,换言之类是对象抽象化而形成的概念,而对象则是类的具体实例,例如股票对象贵州茅台就是股票这个类的具体实例,面向对象编程有三大特征:封装、继承、多态
1.创建对象
搞清楚了对象是类的实例后,就明白想要创建对象先要有类,创建类的代码形式同函数一样,由class关键字打头,随后是类的名称以及继承类的名称,并以冒号(:)结尾,以下是类的一般创建形式
括号表示继承自哪一类,如果没有则填object,这是所有类继承的源头
有了类之后就可以创建具体的实例对象了
我们创建了一个对象asset1,它来自于Asset类
Python可以动态绑定实例对象的属性
就这样我们给对象asset2、asset3分别绑定了名字和价格属性
以上案例演示了源自同一类的不同实例,藉由动态绑定的方法拥有不同属性,虽然方便,但有悖于把类视为实体的模板之惯例,若我们希望创建自同一个类的实例拥有一些共同特征,可以藉由定义一个特殊的__init__方法,来绑定一些在创建实例时必不可少的属性。
我们创建了一个Asset类,它有名字和价格两个属性,创建具体实例时必须传入这两个属性
2.封装
若要打印出具体对像的某个属性,可以创建一个打印函数
以下是示例
但是price属于asset4这个对象的内部属性,从软件设计的角度考量,有些属性可能带有重要信息,像上例轻松从外部函数直接访问内部属性,并不好,比较理想的方法是把属性和访问属性的方法放在同一个对象当中
在类中定义的方法可以用“实例.方法”的方式直接调用
把方法写在对象内部仍然无法阻止对象属性被轻易获取,因为“对象.属性名”依然可以打印出对象的属性,为了对对象的属性提供更加安全的保障,我们在创建对象实例时,在对象属性名字前面加上两个下划线,以表示这个属性为private(私有的)属性,这样通过“对象.属性名”就无法访问,只能通过内部方法访问
给Asset对象的价格属性加密
通过“对象.属性”访问对象的price属性时报错,因为这个属性加密了,而访问name属性时则不报错
相较于直接从外部访问对象的属性,这种把访问方法封装在对象的内部的好处是,它可以赋予方法一些规范,例如如果想要修改对象的属性,可以直接把修改方法写在对象内部
3.继承
继承的思想是在已有的类的基础上,尽可能的多重复去利用它。原有的类称为父类,根据父类衍生出来的类称为子类,一个父类可以衍生出无数个子类,换言之父类是由所有子类抽象而来的,子类一旦继承父类便拥有了父类的属性和方法,并可以视情况增添修改
下面我们创建新的类,他继承自上面的Asset
子类Asset1增加了修改价格方法
4.多态
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性
二、面向对象编程
面向对象编程是相对于面向过程编程而言的,我的理解是,Python面向对象编程是通过不同的方法作用于不同的对象,通过对对象的一系列操作实现目的编程思想
好了,就到这里。今天的内容简单向大家介绍了一下Python的对象概念,以及面向对象编程的编程思想,非常浅显,但我相信有个基本的了解,对以后的学习肯定是有帮助的。
END
,