zoukankan      html  css  js  c++  java
  • 【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不会到函数里面去

     

     这个断点是无效的

     

  • 相关阅读:
    网络七层
    微信小程序开发工具 常用快捷键
    BZOJ 1026 windy数 (数位DP)
    BZOJ 1026 windy数 (数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3709 Balanced Number (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
    UVA 11361 Investigating Div-Sum Property (数位DP)
  • 原文地址:https://www.cnblogs.com/python-test001/p/12391156.html
Copyright © 2011-2022 走看看