【博学谷学习记录】超强总结,用心分享 | 软件测试 python面向对象基础

1. 基本介绍

面向对象是一个编程思想(写代码的套路)
编程思想: 
1. 面向过程
2. 面向对象
以上两种都属于写代码的套路(方法) ,最终目的都是为了将代码书写出来,只不过过程和思考方法不太一样.
  • 面向过程
    • 关注的是 具体步骤的实现, 所有的功能都自己书写
    • 亲力亲为
    • 定义一个个函数, 最终按照顺序调用函数
  • 面向对象
    • 关注的是结果, 谁(对象) 能帮我做这件事
    • 偷懒
    • 找一个对象(), 让对象去做

2. 类和对象

面向对象的核心思想是  找一个对象去帮我们处理事情
在程序代码中  对象是由 类 创建的

类和对象,是 面向对象编程思想中非常重要的两个概念
    • 抽象的概念, 对 多个 特征和行为相同或者相似事物的统称
    • 泛指的(指代多个,而不是具体的一个)
  • 对象
    • 具体存在的一个事物, 看得见摸得着的
    • 特指的,(指代一个)
苹果  ---> 类
红苹果  ----> 类
张三嘴里正在吃的那个苹果  ---> 对象
1. 类的组成
1, 类名 (给这多个事物起一个名字, 在代码中 满足大驼峰命名法(每个单词的首字母大写))
2, 属性 (事物的特征, 即有什么, 一般文字中的名词)
3, 方法 (事物的行为, 即做什么事, 一般是动词)
2. 类的抽象(类的设计)
类的抽象,其实就是找到 类的 类名, 属性 和方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUfuVebK-1658062462995)(E:\04、python\day06_函数和面向对象基础\01-笔记\day06 笔记.assets\A5DC4783-CC1A-4B89-9F2A-25AC16B49D77.png)]

类名:  人类(Person, People)
属性:  名字(name), 年龄(age), 身高(height)
方法:  跑步(run)  吃(eat)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mxxWvVhW-1658062462996)(E:\04、python\day06_函数和面向对象基础\01-笔记\day06 笔记.assets\A424818D-3279-4899-99F4-ED8ED8D68263.png)]

类名: 狗类(Dog)
属性: 颜色(color) , 名字(name) 
方法: 汪汪叫 (bark),  摇尾巴(shake)
3. 面向对象基本代码书写
1. 定义类
先定义简单的类, 不包含属性,  在 python 中定义类需要使用关键字 class 

方法: 方法的本质是在类中定义的函数, 只不过,第一个参数是 self
class 类名:
    # 在缩进中书写的内容,都是类中的代码
    def 方法名(self):   # 就是一个方法
        pass 
2. 创建对象
创建对象是使用 类名() 进行创建,即
类名()  # 创建一个对象, 这个对象在后续不能使用
# 创建的对象想要在后续的代码中继续使用, 需要使用一个变量,将这个对象保存起来
变量 = 类名()  # 这个变量中保存的是对象的地址, 一般可以成为这个变量为对象

# 一个类可以创建多个对象, 只要出现 类名() 就是创建一个对象,每个对象的地址是不一样的
3. 调用方法
对象.方法名()

列表.sort()
列表.append()
4. 案例实现
需求:小猫爱吃鱼,小猫要喝水
类名: 猫类 Cat
属性: 暂无
方法: 吃鱼 (eat)  喝水 (drink )
"""
需求:小猫爱吃鱼,小猫要喝水, 定义不带属性的类
"""


class Cat:
    # 在缩进中书写 方法
    def eat(self):  # self 会自动出现,暂不管
        print('小猫爱吃鱼...')

    def drink(self):
        print('小猫要喝水----')


# 2. 创建对象
blue_cat = Cat()
# 3. 通过对象调用类中的方法
blue_cat.eat()
blue_cat.drink()

# 创建对象
black_cat = Cat()
black_cat.eat()
black_cat.drink()

Cat()  # 是

a = black_cat  # 不是
b = Cat   # 不是
4. self 的说明
class Cat:
    # 在缩进中书写 方法
    def eat(self):  # self 会自动出现,暂不管
        print('小猫爱吃鱼...')

black_cat.eat()
1. 从函数的语法上讲, self是形参, 就可以是任意的变量名, 只不过我们习惯性将这个形参写作 self
2. self 是普通的形参, 但是在调用的时候没有传递实参值,  原因是, Python 解释器在执行代码的时候, 自动的将调用这个方法的对象 传递给了 self, 即 self 的本质是对象

3. 验证, 只需要确定 通过哪个对象调用, 对象的引用和 self 的引用是一样的

4. self 是函数中的局部变量, 直接创建的对象是全局变量
"""
需求:小猫爱吃鱼,小猫要喝水, 定义不带属性的类
"""


class Cat:
    # 在缩进中书写 方法
    def eat(self):  # self 会自动出现,暂不管
        print(f'{id(self)}, self')
        print('小猫爱吃鱼...')


# 2. 创建对象
blue_cat = Cat()
print(f'{id(blue_cat)}, blue_cat')
# 3. 通过对象调用类中的方法
blue_cat.eat()  # blue_cat 对象调用 eat 方法, 解释器就会将 blue_cat 对象传给 self
print('_*_' * 30)
# 创建对象
black_cat = Cat()
print(f"{id(black_cat)}, black_cat")
black_cat.eat()  # black_cat 对象调用 eat 方法, 解释器就会将 black_cat 对象传给 self

5. 对象的属性操作
1. 添加属性
对象.属性名 = 属性值
  • 类内部添加

    在内部方法中, self 是对象,
    self.属性名 = 属性值
    # 在类中添加属性一般写在 __init__ 方法中
    
  • 类外部添加

    对象.属性名 = 属性值  # 一般不使用
    
2. 获取属性
对象.属性名
  • 类内部

    在内部方法中, self 是对象,
    self.属性名
    
  • 类外部

    对象.属性名  # 一般很少使用
    
class Cat:
    # 在缩进中书写 方法
    def eat(self):  # self 会自动出现,暂不管
        print(f'{id(self)}, self')
        print(f'小猫{self.name} 爱吃鱼...')


# 2. 创建对象
blue_cat = Cat()
print(f'{id(blue_cat)}, blue_cat')
# 给 蓝猫添加 name 属性
blue_cat.name = '蓝猫'
# 3. 通过对象调用类中的方法
blue_cat.eat()  # blue_cat 对象调用 eat 方法, 解释器就会将 blue_cat 对象传给 self
print('_*_' * 30)
# # 创建对象
black_cat = Cat()
black_cat.name = '黑猫'
print(f"{id(black_cat)}, black_cat")
black_cat.eat()  # black_cat 对象调用 eat 方法, 解释器就会将 black_cat 对象传给 self

6. 魔法方法
python 中有一类方法, 以两个下划线开头,两个下划线结尾,并且在满足某个条件的情况下, 会自动调用, 这类方法称为 魔法方法

学习: 
1. 什么情况下自动调用
2. 有什么用, 用在哪
3. 书写的注意事项
1. __init__ 方法 **
1. 什么情况下自动调用
	> 创建对象之后会自动调用
2. 有什么用, 用在哪
	> 1. 给对象添加属性的, (初始化方法, 构造方法)   2. 某些代码, 在每次创建对象之后, 都要执行,就可以将这行代码写在 __init__ 方法
3. 书写的注意事项
    > 1. 不要写错了   2. 如果 init 方法中,存在出了 self 之外的参数, 在创建对象的时候必须传参
"""
猫类, 属性 name, age , show_info(输出属性信息)
"""


class Cat:
    # 定义添加属性的方法
    def __init__(self, name, age):  # 这个方法是创建对象之后调用
        self.name = name  # 给对象添加 name 属性
        self.age = age   # 给对象添加 age 属性

    # 输出属性信息
    def show_info(self):
        print(f'小猫的名字是: {self.name}, 年龄是: {self.age}')


# 创建对象,不要在自己类缩进中创建
# Cat()  # 创建对象 ,会输出
blue_cat = Cat('蓝猫', 2)

blue = blue_cat
blue.show_info()

# 创建黑猫
black_cat = Cat('黑猫', 3)
black_cat.show_info()

2. __str__ 方法 *
1. 什么情况下自动调用
	> 使用 print(对象) 打印对象的时候 会自动调用
2. 有什么用, 用在哪
	> 在这个方法中一般书写对象的 属性信息的, 即打印对象的时候想要查看什么信息,在这个方法中进行定义的
	> 如果类中没有定义 __str__ 方法,  print(对象) ,默认输出对象的引用地址
3. 书写的注意事项
	> 这个方法必须返回 一个字符串
class Cat:
    # 定义添加属性的方法
    def __init__(self, n, age):  # 这个方法是创建对象之后调用
        self.name = n  # 给对象添加 name 属性
        self.age = age   # 给对象添加 age 属性

    def __str__(self):
        # 方法必须返回一个字符串, 只要是字符串就行,
        return f'小猫的名字是: {self.name}, 年龄是: {self.age}'


# 创建对象,不要在自己类缩进中创建
# Cat()  # 创建对象 ,会输出
blue_cat = Cat('蓝猫', 2)
print(blue_cat)

# 创建黑猫
black_cat = Cat('黑猫', 3)
print(black_cat)

3. __del__ 方法 [了解]
__init__ 方法, 创建对象之后,会自动调用  (构造方法)
__del__ 方法, 对象被删除销毁时, 自动调用的(遗言, 处理后事)  (析构方法)

1. 调用场景, 程序代码运行结束, 所有对象都被销毁
2. 调用场景, 直接使用 del 删除对象(如果对象有多个名字(多个对象引用一个对象),需要吧所有的对象都删除才行 )
class Demo:
    def __init__(self, name):
        print('我是 __init__, 我被调用了 ')
        self.name = name

    def __del__(self):
        print(f'{self.name} 没了, 给他处理后事...')


# Demo('a')

a = Demo('a')

b = Demo('b')
del a  # 删除销毁 对象,
print('代码运行结束')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值