关于测试的Python学习笔记分享

一,私有和公有

1.1 在 Python 中定义的方法和属性, 可以添加访问控制权限(即在什么地方可以使用这个属性和方法)
1.2 访问控制权限分为两种, 公有权限, 私有权限
1.3 公有权限
> 直接书写的方法和属性, 都是公有的
> 公有的方法和属性, 可以在任意地方访问和使用
1.4 私有权限
> 在类内部, 属性名或者方法名 前边加上两个 下划线 , 这个属性或者方法 就变为 私有的
> 私有的方法和属性, 只能在当前类的内部使用
1.5 什么时候定义私有
> 1. 某个属性或者方法,不想在类外部被访问和使用, 就将其定义为私有即可
> 2. 测试中,一般不怎么使用, 直接公有即可
> 3. 开发中,会根据需求文档, 确定什么作为私有

1.6 如果想要在类外部操作私有属性, 方法是, 在类内部定义公有的方法, 我们通过这个公有方法去操作

#案例示例
class Person():

    def __init__(self, name, age):
        self.name = name#名字
        self.__age = age#年龄

    def __str__(self):
        return (f'名字:{self.name}年龄:{self.__age}')#私有属性年龄


xiaoming = Person('小明', 19)
print(xiaoming)
# #AttributeError: 'Person' object has no attribute 'age'
# xiaoming.__age = 20 #不能在类外部修改私有属性,添加了一个公有属性__age
# print(xiaoming)

"""名字:小明年龄:19"""

二,继承

1. 继承描述的是类与类之间的关系
2. 继承的好处: 减少代码的冗余(相同的代码不需要多次重复书写), 可以直接使用
# class A(object):
class A: #object 类是 Python 中最顶级的类

class B(A): # 类 B, 继承类 A

#子类(B)继承父类(A)之后, 子类的对象可以直接使用父类中定义的公有属性和方法
# 1. 定义一个 动物类
class Animals():
    def eat(self):
        print('狗吃')
# 2. 定义一个 狗类, 继承动物类
class Dog(Animals):
    def call(self):
        print('狗叫')
# 3. 定义一个大狗类, 继承狗类
class BigDog(Dog):
    pass
# 创建 动物类的对象
animal = Animals()
animal.eat()
# 创建狗类对象
dog = Dog()
dog.eat()# 调用父类中的方法
dog.call()# 调用自己类中方法
# 创建大狗类对象
big = BigDog()
big.eat() # 可以调用 父类的父类中的方法
big.call()# 调用 父类 Dog 类的方法

1.1、子类重写-覆盖父类属性和方法

重写: 在子类中定义了和父类中名字相同的方法, 就是重写
重写的原因: 父类中的方法,不能满足子类对象的需求,所以重写
重写之后的特点: 调用子类字节的方法, 不再调用父类中的方法
重写的方式:
>1. 覆盖(父类中功能完全抛弃,不要,重写书写)
>2. 扩展(父类中功能还调用,只是添加一些新的功能) (使用较多)

重写-覆盖

class Animals():
    def eat(self):
        print('狗吃')
class Dog(Animals):
    def eat(self):
        print('狗不吃')

扩展父类中的功能

class XTQ(Dog):
    # XTQ 类bark 方法不再是汪汪汪叫, 改为
    # 1. 先 嗷嗷嗷叫(新功能) 2, 汪汪汪叫(父类中功能) 3. 嗷嗷嗷叫 (新功能)
    def bark(self):
       print('嗷嗷嗷叫...')
       # 调用父类中的代码
       super().bark() # print() 如果父类中代码有多行呢?
       print('嗷嗷嗷叫...')
xtq = XTQ()
xtq.bark()

三,多态

1. 是一种写代码,调用的一种技巧
2. 同一个方法, 传入不同的对象, 执行得到不同的结果, 这种现象称为是多态
3. 多态 可以 增加代码的灵活度
class Person():
    def work(self):
        print("人工作")


class Student(Person):
    def work(self):
        print("学生学习")


class Teacher(Person):
    def work(self):
        print("老师教学")


class woker:
    def show_work(self, work):
        work.work()
w = woker()
s = Student()
t = Teacher()
w.show_work(s)
w.show_work(t)

属性和方法

Python 中一切皆对象.
即 使用 class 定义的类 也是一个对象

实例对象(实例)

1. 通过 类名() 创建的对象, 我们称为实例对象,简称实例
2. 创建对象的过程称为是类的实例化
3. 我们平时所说的对象就是指 实例对象(实例)
4. 每个实例对象, 都有自己的内存空间, 在自己的内存空间中保存自己的属性(实例属性)

类对象(类)

1. 类对象 就是 类, 或者可以认为是 类名
2. 类对象是 Python 解释器在执行代码的过程中 创建的
3. 类对象的作用: ① 使用类对象创建实例 类名(), ② 类对象 也有自己的内存空间, 可以保存一些属性值信息
(类属性)
4. 在一个代码中, 一个类 只有一份内存空间

实例属性

概念 : 实例对象 具有的属性
定义和使用
init 方法中 , 使用 self . 属性名 = 属性值 定义
在方法中是     使用 self . 属性名 来获取 ( 调用 )

类属性

概念 : 类对象 具有的属性
定义和使用
在类内部 , 方法外部 , 直接定义的变量 , 就是类属性
使用 : 类对象 . 属性名 = 属性值 or 类名 . 属性名 = 属性值
         类对象 . 属性名 or 类名 . 属性名

方法的划分

方法, 使用 def 关键字定义在类中的函数就是方法

实例方法(最常用)
# 在类中直接定义的方法 就是 实例方法
class Demo:
def func(self): # 参数一般写作 self,表示的是实例对象
pass
类方法(会用)
# 在方法名字的上方书写 @classmethod 装饰器(使用 @classmethod 装饰的方法)
class Demo:
@classmethod
def func(cls): # 参数一般写作 cls, 表示的是类对象(即类名) class
pass
静态方法(基本不用)
# 在方法名字的上方书写 @staticmethod 装饰器(使用 @staticmethod 装饰的方法)
class Demo:
@staticmethod
def func(): # 一般没有参数
pass

案例

定义一个游戏类 Game , 包含实例属性 玩家名字 ( name )
1. 要求记录游戏的最高分 ( top_score 类属性 ),
2. 定义方法 : show_help 显示游戏的帮助信息 输出 这是游戏的帮助信息
3. 定义方法 : show_top_score , 打印输出游戏的最高分
4. 定义方法 : start_game , 开始游戏 , 规则如下
1. 使用随机数获取本次游戏得分 范围 (10 - 100 ) 之间
2. 判断本次得分和最高分之间的关系
如果本次得分比最高分高 ,
修改最高分
如果分数小于等于最高分 , 则不操作
3. 输出本次游戏得分

import random


class Game():
    top_score = 0
    def __init__(self,name):
        self.name = name
    @staticmethod
    def show_help(self):
        print('这是游戏的帮助信息')

    @classmethod
    def show_top_score(self):
        print('这是游戏最高分{Game.top_score}')
    def start_game(self):
        score = random.randint(10,101)
        if score > Game.top_score:
            Game.top_score = score
        else:
            pass
        print(Game.top_score)
xw = Game('ww')
xw.start_game()
xw.show_top_score()
xw.start_game()
xw.show_top_score()

参考资料

黑马软件测试python

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值