4
我們已經制作了一個大量使用numpy的MaskedArrays庫(帶有繼承)。但我想運行獅身人面像的make doctest
而不測試從numpy繼承的方法,因爲它們造成了大約100次失敗。阻止獅身人面像執行繼承的文檔測試
這lookls這樣的:
class _frommethod:
"""
Adapted from numpy.ma._frommethod
"""
def __init__(self, func_name):
self.__name__ = func_name
self.__doc__ = getattr(MaskedArray, func_name).__doc__
self.obj = None
def __get__(self, obj, objtype=None):
self.obj = obj
return self
def __call__(self, a, *args, **params):
# Get the method from the array (if possible)
method_name = self.__name__
method = getattr(a, method_name, None)
if method is not None:
return method(*args, **params)
# Still here ? Then a is not a MaskedArray
method = getattr(MaskedTimeData, method_name, None)
if method is not None:
return method(MaskedTimeData(a), *args, **params)
# Still here ? OK, let's call the corresponding np function
method = getattr(np, method_name)
而現在,我們的圖書館還支持numpy的的功能,因此我們使用:
min = _frommethod('min')
max = _frommethod('max')
...
如果我禁用self.__doc__ = getattr(MaskedArray, func_name).__doc__
的make doctest
的故障消失。但我想保留繼承的文檔;這樣用戶仍然可以在ipython中使用mylibrary.min?
。
任何想法如何防止獅身人面像執行此「繼承」doctests?
此功能(您的解決方案)去哪裏?它是獅身人面像的延伸?也許我也想用它。順便說一下,您應該將解決方案作爲答案發布,並將其標記爲已解決,因爲它對您有用。 – bmu
@bmu:我做了一個完整的答案,並添加了一個更完整的例子! (順便說一下:你已經觀看了截屏視頻?:)) – Themerius