有没有办法只模拟类构造函数的默认参数?例如,如果我有这个类:
HWND
有没有办法让模拟只是 class A (object):
def __init__(self, details='example'):
self.details = details
参数的默认值,例如details
?
答案 0 :(得分:2)
新的模拟课会吗?
class Amock(A):
def __init__(self, details='newdefault'):
super(Amock, self).__init__(details=details)
答案 1 :(得分:1)
当然这是最简单的:
class TestA (A):
def __init__(self, details='test'):
super(TestA, self).__init__(details)
如果您未在其他地方更改代码时无法使用TestA
,那么您可以尝试一些更直接的内容:
>>> A().details
'example'
>>> A.__old_init = A.__init__
>>> A.__init__ = lambda self, details='test': self.__old_init(details)
>>> A().details
'test'
如果你愿意走那么远,为什么不采取整洁的方式?
class A (object):
_DEFAULT_DETAILS = 'details'
def __init__(self, details=None):
if details is None:
self.details = self._DEFAULT_DETAILS
else:
self.details = details
现在你可以覆盖默认值而不需要任何诡计:
A._DEFAULT_DETAILS = 'test'