在Python中学习继承,到目前为止我的理解是,如果一个子类打算让方法做一些与基类不同的事情,那么子类只会覆盖基类的方法。
以HowDoI为例,我们在test_howdoi.py中看到HowdoiTestCase
类继承自unittest.TestCase
,覆盖TestCase
的{{1}} } function(只有setUp()
es):
pass
好到目前为止。
然后 test_howdoi.py继续覆盖 def setUp(self):
self.queries = ['format date bash',
'print stack trace python',
'convert mp4 to animated gif',
'create tar archive']
self.pt_queries = ['abrir arquivo em python',
'enviar email em django',
'hello world em c']
self.bad_queries = ['moe',
'mel']
,但它只写入tearDown()
(根据基类的定义)。并且tearDown()不会在任何地方使用。
答案 0 :(得分:1)
您所描述的结构可能会缩减为以下代码:
class A(object):
def f(self):
pass
class B(A):
# this declaration is redundant since exact same behaviour is already inherited.
def f(self):
pass
试图回答你的问题:
单位测试跑步者使用如果无意使用它,为什么会被覆盖呢?
setUp
和tearDown
方法(顾名思义 - 测试前后)。
为什么基类功能会被相同的行为覆盖 作为它在基类中的行为?
有些原因可能是:
setUp
和tearDown
是可选的,默认情况下为空实现TLDR:意外或个人偏好。