2019-05-06day14总结

  • import导入模块会自动避免重复导入

  • 异常捕获:正常情况下程序出现异常,程序会直接崩溃,不能接着往后执行,异常捕获就是为了让程序出现异常不崩溃,自己处理异常

  • 语法

    try:
    可能会出现异常的代码块
    except:
    出现异常后执行的代码

    执行过程:先执行try中代码,执行过程中,若是遇到异常,程序不崩溃,直接执行except中代码,如果没有出现异常,不会执行except中代码,直接执行其他语句

    try:
    代码块1
    except 错误类型:
    代码块2

    先执行代码块1,如果在执行代码块1的过程中出现异常,检查出现的异常类型是否和except后面的异常类型一致,如果一致程序不崩溃,直接执行代码块2,如果不一致,程序崩溃,若没有异常,则执行其他语句

    try:
    代码块1
    except (异常类型1,异常类型2...):
    代码块2

try:
    代码块1
except 异常类型1:
    代码块2
except 异常类型2:
    代码块3
#......


try:
    可能会出现异常的代码
except:
    出现异常后执行的代码
finally:
    不管是否出现异常,都会执行的代码;#不管try中有没有异常,是否被捕获,都会执行finally中的代码,可以在这里做一些数据保存备份的操作
  • 抛出异常

    • 语法:raise 异常类型 异常类型可以是系统自带的,也可以是自定义的(要求异常类型必须是Exception的子类)
    • 作用:让程序主动崩溃/报错
  • 面向对象基础

    • 编程思想

      • 面向过程编程:考虑通过代码逐步去解决问题的思想
      • 函数式编程:考虑是否能够有这样功能的一个函数
      • 面向对象编程:考虑是否有一个类,拥有相应的功能和属性
    • 类和对象

      • 什么是类:类是拥有相同功能和相同属性的对象的集合
      • 什么是对象:对象就是类的实例
    • 类的声明:python中所有数据类型都是类,每种类型对应的数据都是对象,例如:int类是所有整数的集合(每个单独的整数都是int的对象);声明类就是自定义类型;类名:自己命名,标识符不能是关键字,见名知意,首字母大写,驼峰式命名

      class 类名:
      类的内容

  • 类的内容:类的说明文档、属性、功能(方法:声明在类中的函数,方法就是函数)

    • 方法:本质是声明在类中的函数,包括对象方法,类方法,静态方法。

      • 对象方法:直接在类中声明的函数就是对象方法,每个方法有一个默认参数self,需要使用'对象.'的方式去调用;从语法上来说可以使用'类.'的方式去调用,但self参数会失去意义,不使用。方法中的默认参数self,在通过对象调用的时候,这个参数不用传参,系统会自动将当前对象传递给它,哪个对象调用的当前方法,self就是哪个对象。
      • init方法:python所有类中都有一个特殊的对象方法:init(),(python中以两个下划线开头并以两个下划线结尾的方法叫魔法方法,这样的方法都不需要手动调用,系统会在需要的情况下自动调用);当通过类去创建对象的时候,系统会自动调用init方法,对对象进行初始化操作
      • 构造方法:函数名和类名一样的方法是构造方法,python中不需要手动编写,声明类时,系统会自动创建这个类的构造方法,方法中会先在内存中开辟空间创建对象,然后用创建的对象调用init方法对对象进行初始化,初始化完成后返回对象;创建对象时需不需要参数、要几个参数看init方法;
      • 属性:分为类的字段和对象属性;直接声明在类中的变量就是类的字段,通过'类.'的方式去获取,属性的值不会因为对象不同而不同,就可以使用类的字段;对象属性需要声明在init方法中,以'self.属性=值'的方式来调用,通过'对象.'的方式来使用,属性的值会因为对象不同而不同就使用对象属性
      • 对象属性的操作(增删改查):

      class Student:
      slots = ('name', 'age') # 在这里可以设置对象属性取值范围,元组中存放字符串

      def __init__(self, name, age):
          self.name = name
          self.age = age
      

      stu1 = Student('aaa', 18)
      stu2 = Student('bbb', 20)

      print(stu1.name)
      arg = 'name'
      print(getattr(stu1, arg, '默认值')) # 属性名可以以变量传入,若不存在该属性名,则返回默认值

      增/改,属性存在修改属性的值,不存在则添加该属性和值,类似于字典

      print(stu1.name)
      stu1.name = 'ccc'
      print(stu1.name)
      arg = 'name'
      setattr(stu1, arg, 'ddd')
      print(stu1.name)
      stu1.gender = 'male'

      setattr(stu1, 'gender', 'male')

      del stu1.age
      delattr(stu1, 'age')

      属性的操作只针对单个对象

      在类中可以通过slots赋值来约束当前类的对象有哪些对象属性

       - 内置类属性:声明类时系统自动给类添加的属性
      
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容