• 【python基础语法】代码debug调试和面向对象编程(上)(第10天课堂笔记) (2020-02-28 17:54)


    '''
    主动抛出异常处理raise函数
    语法格式:
    raise 异常类型(异常信息)
    raise NameError(name "a" is not defined)
    在接口测试中会用到
    
    断言:assert
    断言,什么是断言
    其实就是一个assert后面跟一个条件语句,如果条件不成就会触发断言异常
    assert断言语句的语法格式
    assert语句用来声明某个条件是真的
    当assert语句失败的时候,会引发一AssertionError
    assert 表达式 # 方式一
    
    程序debug调式
    问题点:代码出错了,怎么找错误,并且解决问题
    
    调式方法:
    print大法
    在错误代码前一行,使用print输出对应的数据
    
    使用pycharm打断点进行debug调试
    F7:往下走一步(遇到函数调用,会进入到函数内部)
    F8:往下走一步(遇到函数调用,不会进入到函数的内部)
    注意:
    在任何地方都可以打断点,但是要确定打的断点是否能够执行到
    什么时候执行不到:打断点不能打到条件判断上面
    '''
    # 主动抛出异常
    raise ValueError("这个是自己主动引发的异常")
    raise TypeError("cxcv")
    raise FileNotFoundError("找不到文件")
    
    # assert断言
    if 8 > 10:
        print("成立")
    else:
        print("不成立")
    assert "abc" == "a8bc"
    # 条件不成立抛出异常
    assert 8 > 10
    print("999")
    
    """
    面向对象
    一、类和实例对象
    类是一类事物抽象概念,不是真实存在的,描绘了该类事物共同的特征和行为
    实例对象:
    某类事物的具体个体,是该类事物的具体表现,它是真实存在的,万物皆对象
    例如:字典、列表、字符串、元祖是数据类型的对象
    可以定义一个数据类,包括字典、列表、字符串、元祖的对象
    方法:是通过对象来进行调用
    列表的方法:
    append      列表添加数据(末尾)
    方法:
    方法的使用:对象.方法名(参数)
    例如:列表的方法
    li = [11,22,33]
    li.append()
    
    类和对象
    类的定义:
    关键字:class
    
    方式一:
    class 类名:
    方式二:
    class 类名(object):
    注意:方式一、方式二定义类是一样的,没有任何区别,只是写法不一样
    
    类名的命名规范:
    遵循标识符命名规范
    每个单词的第一个字母必须大写(大驼峰命名)
    Hero Cat MyClass 
    通过类创建对象:类名()
    定义一个猫类:
    clas Cat(object):
        pass
    
    对象的组成:
    属性 + 方法 = 对象
    类属性和实例(对象)属性
    属性:定义在类中的变量()
    
    类属性和实例(对象)属性:
    什么是类属性:这个类事物所有的对象的共同特征,属性值都是一样的
    语法格式:属性 = 属性值
    什么是对象属性:这类事物所有对象都有这个属性,但是属性值是不一样的
    语法格式:对象.属性 = 属性值
    猫类的特征:
    所有猫类共同属性:四条腿、长尾巴、两只眼睛
    实例属性的访问:
    实例属性只有该实例对象自己能访问
    
    初始化方法:
    内方法:就是定义在类中的函数
    init方法:创建对象的时候自动执行的,不需要手动调用这个方法
    方法:定义在类里面的函数叫做方法,本质上还是一个函数
    def__init__(self):
        pass
    self:代表实例对象(谁去调用这个方法,代表的就是谁)
    方法作用:实现对象的某些特定功能
    
    类属性和实例属性
    属性:定义在类中的变量()
    
    方法和属性的不一样地方:
    方法是行为:动词
    属性是变量:名词
    
    实例方法:
    实例方法直接定义在类中,类里面定义的函数叫实例方法
    实例方法的第一个参数为self(必须要写),这个参数是不需要传参的
    案例:猫类的方法定义
    
    """
    
    
    # 定义类:
    class Cat:
        """
        定义一个猫类
        """
        # 共同的特征(属性)
        # 直接在类里面定义的变量叫做类属性:
        # 这类事物所有的对象都有这个属性,属性值都是一样的
        # 定义类属性
        teg = "四条腿"
        tail = "有尾巴"
    
    # 通过类创建对象:类名(),创建猫类不同的对象
    huhu = Cat()
    kt = Cat()
    dd = Cat()
    # 定义实例对象的属性
    # 批量定义实例属性
    huhu.age = 19
    kt.age = 18
    dd.age = 8
    
    kt.name = "凯迪"
    huhu.name = "灰灰"
    dd.name = "叮当"
    
    # 类属性和实例属性定义后的使用:
    # 获取实例属性值:对象.属性
    print(kt.age)
    print(huhu.age)
    print(dd.age)
    
    # 获取类属性值:对象.属性(不可以通过类去获取实例属性)
    # 通过对象可以获取类属性
    print(huhu.tail)
    print(huhu.tail)
    # 通过类也可以获取类属性
    print("----------")
    print(Cat.tail)
    
    # 通过类来创建对象
    kt = Cat()
    print(kt)
    
    class MyClass:
        pass
    m = MyClass()
    print(m)
    
    class Cat:
        """
        定义一个猫类
        """
        # 定义类属性
        teg = "四条腿"
        tail = "有尾巴"
        # 定义实例属性,通过初始化方法(__init__)来定义
        def __init__(self, age, name):
            # 定义实例属性:self代表实例对象,age是实例对象的属性
            print(self)
            self.age = age
            self.name = name
            print("正在给对象设置属性")
    
        # 类里面的方法,第一参数都是self,self都是一个对象
        # 定义实例方法:
        def skill1(self):
            print("猫的技能1,吃鱼")
        def skill2(self):
            print("猫的技能2,抓老鼠")
    
    # 创建对象
    # 调用实例属性
    kt = Cat(age=18, name="凯迪")
    print(kt.age, kt.name)
    
    # 调用实例方法
    kt.skill1()
    kt.skill2()
    
    hh = Cat(age=20, name="灰灰")
    print(hh)
    print(kt.age, kt.name, kt.teg)
    debug调试步骤:

    查看对应的数据信息,程序运行到每个地方,变量类型和数据都可以很直观的看到

     

     

    F7和F8每行代码依次执行,F7遇到内置函数会进入到函数里面去,F8不会到函数里面去

     

     这个断点是无效的

     

  • 相关阅读:
    886C. Petya and Catacombs#墓室探险(set集合)
    uc/os调度机制深度解析
    总结使用QObject实现线程
    日常总结--c++常量的深入理解
    数据结构与算法--跳跃链表
    java下输出中文的一点研究
    java使用readUTF()读取中文抛出EOFException异常的处理方法
    java连接5.1以上的mysql出现问题---The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.
    Qt入门便遇到坑--向QMainWindow类及其子类中添加布局
    linux_4.19内核编译总结
  • 原文地址:https://www.cnblogs.com/python-test001/p/12391156.html
Copyright © 2020-2023  润新知