面向对象编程基础 Day 8
学习计划:
- spyder的tutorial
- day8的内容
- PEP 8中的语法规范,续行再看一遍
- day7 的综合实例
- 返回day 1解决问题
学习内容:
对于python
用自己的语言叙述一遍今天所学的
- 面向对象编程概念
-
什么是对象,什么是类,两者的联系与区别
对象是类的实例,类是对象的模板,就如下图中类四边形添加了属性(对边平行)就形成了一个对象,当然这只是初步理解,有些细节还没有提到。
类与对象的理解 - 程序中的数据和操作数据的函数是一个逻辑上的整体,称之为对象,具有相同行为的对象可抽象为类。同一类的对象具有相同的静态特征(属性)和动态特征(行为)
-
- 举例说明:
class Student(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def score(self, score):
print('学生的成绩是', score)
定义了一个
Student
类,属性是name
(名字)和gender
(性别),行为是score()
(输出学生的成绩)object
是什么呢?这里就要提到类的三大支柱——封装、继承、多态,而object就是输入其他类的名字的参数,即object
是一个参数,他的值是其他类的名字(现在看来是这样的,待明天继续学习后,再做添加)__init__
是什么呢?为什么跟其他的函数不一样,这里就要提到python里面的魔法方法
据说,Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。
他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。
Python 的魔术方法非常强大,然而随之而来的则是责任。了解正确的方法去使用非常重要!详细解释
那我这个才入门的小学鸡对魔法方法的初步了解就是——他不用输入函数名进行调用函数,一切都是在使用类时自动发生的,就如__init__
,可作为对象的初始化,不用直接调用__init__
,只需输入student1=Student('hilary', '女')
,即可为student1
进行初始化
- 私有成员,受保护的成员,公有成员,
我在C++语言中被这些个成员搞得昏头昏脑,一会儿不能访问啦,一会儿友类又可以访问啦,完全搞不清楚,现在好啦,python中对私有,公有没有明确划定,把一切成员都当作公有成员,方便程序员的共享.- 当然如果确实有些成员需要私有化,可以如下定义
def __score(self):
在名字前加上__
,但其实悄悄地说,这些所谓的私有成员还是可以访问,可采取student1._Student__score(100)
进行访问,换言之,并没有不能调用的私有成员,python鼓励程序的共享,也因此要求程序员对自己所说的话负责。 -
self._name
中的单下划线表示该成员受保护,访问需慎重,但仅仅只是表示,并不会对操作有影响 - 这里,再强调一下,魔法方法如
__init__
不是私有成员,虽然他前面有标志性小杠~
详细见《Python - 那些年我们踩过的那些坑》
- 当然如果确实有些成员需要私有化,可以如下定义
- 类的封装,如果把类比作黑盒子,那么数据和对数据的操作就是黑盒子里面我们不能接触的东西,而我们可以通过它们与外界的接口,即函数的名字和要传入的操作,进行消息的传递。
隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口
对于spyder
- 查看文件。当打开一系列文件在编辑器上方时,有两种方法快速找到所需的文件
- 单击文件最左边的符号
Browse Tabs
,显示所有文件以及对应路径 -
Ctrl-P
或者Ctrl-Tab
得到列出已打开文件的表格 ,顺序是最常用的在前。
- 单击文件最左边的符号
- 变量查看器的用法
- 双击变量名可改变值
- 双击类名,可跳出列表,显示类中的成员,可修改,非常方便,如果没有找到已经定义的类名,单击变量查看器窗口右上角的设置选项,取消
exclude unsupported data types
(不包含不支持的数据类型)这一项,(最开始我竟然看成了include,迷糊了好久,英语啊英语啊)
对python说的话:
我用在你的时间越来越多了,把复习教资的时间都分了一些给你,对你的期待也越来越多了,也越来越害怕自己到头来学无所获,效率低下,总是担忧是不是做少了,还是做多了无用功,因为我在走一条根本就不知道头的路,你的未来和我的未来都是不确定的,没有什么最好的方法,也没有什么省事的方法,我们只能一步一步走扎实,我相信前方会有金色的大门为我打开。光明一直都在,没有什么值得抱怨。
未做的事
- 上传代码们
- day7综合案例还有两个