python中的类

基本定义

"""
定义类
规范: 类名一般首字母大写,多个英文单词,每个英文单词首字母大写
"""
class TestCase:
    pass

类变量

class TestCase:
    # 定义类变量
    testtitle = ""
    teststep = []

    # 定义方法
    def add_test_step(self,step):
        # 访问类变量
        TestCase.teststep.append(step)

# 实例化类
t1 = TestCase()
print(t1.testtitle) # 访问实例变量
print(t1.teststep) 
# 访问方法
t1.add_test_step("打开浏览器")
print(t1.teststep)  
使用类变量定义数据的时候会有一些问题
使用类变量定义数据的时候会有一些问题
class TestCase:
    # 定义类变量
    testtitle = ""
    teststep = []
    # 定义方法
    def add_test_step(self,step):
        # 访问类变量
        TestCase.teststep.append(step)
    def remove_test_step(self,index):
        TestCase.teststep.pop(index)
# 实例化类
t1 = TestCase()  #创建测试用例
t1.testtitle = "用户注册"
t1.add_test_step("打开浏览器")
t1.add_test_step("输入url")
t2 = TestCase()
t2.testtitle = "用户登录"
t2.add_test_step("到达登录页面")
t2.add_test_step("输入数据")
print(t1.testtitle,t1.teststep)
print(t2.testtitle,t2.teststep)

用户注册 ['打开浏览器', '输入url', '到达登录页面', '输入数据']
用户登录 ['打开浏览器', '输入url', '到达登录页面', '输入数据']

  所有的teststep 值都一样。注:使用类变量定义的时候会有一些问题,定义的类变量,所有实例化的对象都共享这个类变量,所以添加了构造器来解决这种问题

构造器

构造器:为每个实例化对象创建单独的变量。实例化一个类后,分配一块空间,如下图中t1t2互不影响,原来的定义的类变量,类变量会共享,现在引入构造器这种方法,将一般变量都会放到init函数中,Self相当于实例对象本身,在类中无论构造器,还是方法中,都要用self,Init是一个类的构造器,还是特殊方法,可以加参数,也可以不加

 

 

 注:每实例化一个对象,就在内存分配一块空间,拷贝类的属性和方法

 

class TestCase:
    # 类的构造器  特殊方法
    def __init__(self):
        self.title_name=""  # 实例变量
        self.test_steps = []

    def add_test_step(self,step):
        self.test_steps.append(step)
# 实例化类
t1 = TestCase()
t1.title_name = "用户注册"
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")

t2 = TestCase()
t2.title_name = "用户登录"
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")

print(t1.title_name,t1.test_steps)

print(t2.title_name,t2.test_steps)
注:以上是不传参数的构造器,在构造器中为每个实例化对象创建单独的 变量。每个实例化对象单独维护自己的变量。

所以上述代码执行结果为

用户注册 ['打开浏览器', '到达首页']
用户登录 ['打开注册页面', '输入注册数据']

如果想再加一个变量,例如:等级level,则需要在init函数中添加一个变量,另外对于每个实例化对象,需要添加一行代码

class TestCase:
    # 类的构造器  特殊方法
    def __init__(self):
        self.title_name=""  # 实例变量
        self.test_steps = []
        self.level=''    #添加的代码

    def add_test_step(self,step):
        self.test_steps.append(step)
# 实例化类
t1 = TestCase()
t1.title_name = "用户注册"
t1.level='高'    #添加的代码
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")

t2 = TestCase()
t2.title_name = "用户登录"
t2.level='中'   #添加的代码
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")

print(t1.title_name,t1.test_steps,t1.level)  #修改的代码

print(t2.title_name,t2.test_steps,t2.level)  #修改的代码

  如果再需要加几个变量,就会更加麻烦,在init函数中,定义时可以传入参数,这样可以简化代码,更加方便

 

class TestCase:
    # 类的构造器  特殊方法 __init__ 定义的参数在实例化的时候 必须传入对应的参数 (类似于函数)
    def __init__(self,name,level):
        self.title_name=name  #  实例变量 测试用例标题
        self.test_level = level # 用例优先级
        self.test_steps = []  # 测试步骤

    def add_test_step(self,step):
        self.test_steps.append(step)

    def save_to_file(self,filename):
        """
        将用例名字,用例优先级,用例的操作步骤,保存到 指定的文件中
        :param filename: 保存的文件路径
        :return:
        """
        

# 实例化类
t1 = TestCase(name="用户注册",level="高")
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")

t2 = TestCase("用户登录","高")
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")

print(t1.title_name,t1.test_steps)

print(t2.title_name,t2.test_steps)

   

 

 

class TestCase:
    # 类的构造器  特殊方法 __init__ 定义的参数在实例化的时候 必须传入对应的参数 (类似于函数)
    def __init__(self,name,level):
        self.title_name=name  #  实例变量 测试用例标题
        self.test_level = level # 用例优先级
        self.test_steps = []  # 测试步骤

    def add_test_step(self,step):
        self.test_steps.append(step)

    def save_to_file(self,filename):
        """
        将用例名字,用例优先级,用例的操作步骤,保存到 指定的文件中
        :param filename: 保存的文件路径
        :return:
        """
        with open(filename,mode='w',encoding='utf8') as f:
            f.write(self.title_name+'\n')
            f.write(self.test_level+'\n')
            for step in self.test_steps:
                f.write(step+'\n')


# 实例化类
t1 = TestCase(name="用户注册",level="高")
t1.add_test_step("打开浏览器")
t1.add_test_step("到达首页")
# 保存到文件中
t1.save_to_file('./t1.txt')

t2 = TestCase("用户登录","高")
t2.add_test_step("打开注册页面")
t2.add_test_step("输入注册数据")
t2.save_to_file('./t2.txt')

  

 

 
posted @ 2020-11-12 10:05  haoaixiao  阅读(126)  评论(0编辑  收藏  举报