【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不会到函数里面去

 

 这个断点是无效的

 

原文地址:https://www.cnblogs.com/python-test001/p/12391156.html