103python类函数、成员函数、静态函数、类变量、成员变量、及其unittest前后置
复习巩固下:
1、python中类函数、成员函数、静态函数、类变量、成员变量
在Python中,类函数、成员函数和静态函数都是类的函数,它们的不同之处在于它们的作用域和调用方式。
2、unittest前后置
在编写单元测试时,经常需要在测试方法执行前或执行后执行某些特定的代码。这些代码通常称为前置和后置条件。常见的前置和后置条件包括:创建测试对象、准备测试数据、清理测试数据、关闭数据库连接等等。unittest提供了一些装饰器来实现前置和后置条件。
一:
1、类函数(Class Method):类函数是定义在类上的函数,可以访问类变量和类方法。它们的第一个参数通常被命名为cls
,表示类本身。可以使用@classmethod
装饰器来定义类函数。
示例代码:
class MyClass:
count = 0 # 类变量
@classmethod
def increase_count(cls):
cls.count += 1
print(MyClass.count) # 0
MyClass.increase_count()
print(MyClass.count) # 1
2、成员函数(Instance Method):成员函数是定义在类中的函数,需要通过类的实例来调用。它们的第一个参数通常被命名为self
,表示调用该方法的实例本身。成员函数可以访问类变量和成员变量。在定义时,不需要添加任何装饰器。
示例代码:
class MyClass:
def __init__(self):
self.count = 0 # 成员变量
def increase_count(self):
self.count += 1
my_object = MyClass()
print(my_object.count) # 0
my_object.increase_count()
print(my_object.count) # 1
3、静态函数(Static Method):静态函数是定义在类中的函数,它们与类和实例都没有直接关系。静态函数不能访问类变量和成员变量。在定义时,需要使用@staticmethod
装饰器来定义静态函数。
示例代码:
class MyClass:
@staticmethod
def say_hello():
print("Hello, World!")
MyClass.say_hello() # Hello, World!
4、类变量(Class Variable):类变量是定义在类上的变量,所有的类实例都可以访问它。类变量通常用于表示与类相关的状态或共享的数据。
示例代码:
class MyClass:
count = 0 # 类变量
my_object = MyClass()
print(my_object.count) # 0
MyClass.count = 1
print(my_object.count) # 1
5、成员变量(Instance Variable):成员变量是定义在类实例上的变量,每个类实例都有自己的一组成员变量。成员变量通常用于表示与实例相关的状态或数据。
示例代码:
class MyClass:
def __init__(self):
self.count = 0 # 成员变量
my_object = MyClass()
print(my_object.count) # 0
my_object.count = 1
print(my_object.count) # 1
二:
下面是一个简单的例子,说明如何使用unittest的前置和后置条件:
import unittest
class TestStringMethods(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
def test_upper(self):
print("test_upper")
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
print("test_isupper")
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
if __name__ == '__main__':
unittest.main()
在上面的示例中,setUpClass()和tearDownClass()方法分别在测试类的所有测试方法之前和之后执行。setUp()和tearDown()方法在每个测试方法之前和之后执行。运行上述代码,将得到以下输出:
setUpClass
setUp
test_upper
tearDown
setUp
test_isupper
tearDown
tearDownClass
可以看到,setUpClass()和tearDownClass()方法仅在测试类的所有测试方法之前和之后执行一次,而setUp()和tearDown()方法在每个测试方法之前和之后执行。这使得我们可以在测试方法中使用相同的测试对象和测试数据,同时保持测试环境的干净和一致。
注意:前置和后置条件的执行顺序与测试方法的执行顺序无关。
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/17222327.html