Day8 抽象思维之“类” 2019-10-20

面向对象编程基础 Day 8


学习计划:

  1. spyder的tutorial
  2. day8的内容
  3. PEP 8中的语法规范,续行再看一遍
  4. day7 的综合实例
  5. 返回day 1解决问题

学习内容:

对于python

用自己的语言叙述一遍今天所学的

  1. 面向对象编程概念
    • 什么是对象,什么是类,两者的联系与区别
      对象是类的实例,类是对象的模板,就如下图中类四边形添加了属性(对边平行)就形成了一个对象,当然这只是初步理解,有些细节还没有提到。


      类与对象的理解
    • 程序中的数据和操作数据的函数是一个逻辑上的整体,称之为对象,具有相同行为的对象可抽象为类。同一类的对象具有相同的静态特征(属性)和动态特征(行为)
  2. 举例说明:
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进行初始化

  1. 私有成员,受保护的成员,公有成员,
    我在C++语言中被这些个成员搞得昏头昏脑,一会儿不能访问啦,一会儿友类又可以访问啦,完全搞不清楚,现在好啦,python中对私有,公有没有明确划定,把一切成员都当作公有成员,方便程序员的共享.
    • 当然如果确实有些成员需要私有化,可以如下定义def __score(self):在名字前加上__,但其实悄悄地说,这些所谓的私有成员还是可以访问,可采取student1._Student__score(100)进行访问,换言之,并没有不能调用的私有成员,python鼓励程序的共享,也因此要求程序员对自己所说的话负责。
    • self._name中的单下划线表示该成员受保护,访问需慎重,但仅仅只是表示,并不会对操作有影响
    • 这里,再强调一下,魔法方法如__init__不是私有成员,虽然他前面有标志性小杠~
      详细见《Python - 那些年我们踩过的那些坑》
  2. 类的封装,如果把类比作黑盒子,那么数据和对数据的操作就是黑盒子里面我们不能接触的东西,而我们可以通过它们与外界的接口,即函数的名字和要传入的操作,进行消息的传递。

隐藏一切可以隐藏的实现细节,只向外界暴露(提供)简单的编程接口

类的封装
对于spyder
  1. 查看文件。当打开一系列文件在编辑器上方时,有两种方法快速找到所需的文件
    • 单击文件最左边的符号Browse Tabs,显示所有文件以及对应路径
    • Ctrl-P或者Ctrl-Tab得到列出已打开文件的表格 ,顺序是最常用的在前。
  2. 变量查看器的用法
    • 双击变量名可改变值
    • 双击类名,可跳出列表,显示类中的成员,可修改,非常方便,如果没有找到已经定义的类名,单击变量查看器窗口右上角的设置选项,取消exclude unsupported data types (不包含不支持的数据类型)这一项,(最开始我竟然看成了include,迷糊了好久,英语啊英语啊)

对python说的话:

我用在你的时间越来越多了,把复习教资的时间都分了一些给你,对你的期待也越来越多了,也越来越害怕自己到头来学无所获,效率低下,总是担忧是不是做少了,还是做多了无用功,因为我在走一条根本就不知道头的路,你的未来和我的未来都是不确定的,没有什么最好的方法,也没有什么省事的方法,我们只能一步一步走扎实,我相信前方会有金色的大门为我打开。光明一直都在,没有什么值得抱怨。

未做的事

  1. 上传代码们
  2. day7综合案例还有两个

你可能感兴趣的:(Day8 抽象思维之“类” 2019-10-20)