On Jan 16, 6:55 pm, Steven D'Aprano <st...@remove-this- cybersource.com.au> wrote: > I have a series of subclasses that inherit methods from a base class, but > I'd like them to have their own individual docstrings.
The following is not tested more than you see and will not work for builtin methods, but it should work in the common cases: from types import FunctionType, CodeType def newfunc(func, docstring): c = func.func_code nc = CodeType(c.co_argcount, c.co_nlocals, c.co_stacksize, c.co_flags, c.co_code, c.co_consts, c.co_names, c.co_varnames, c.co_filename, func.__name__, c.co_firstlineno, c.co_lnotab, c.co_freevars, c.co_cellvars) nf = FunctionType(nc, func.func_globals, func.__name__) nf.__doc__ = docstring return nf def setdocstring(method, docstring): cls = method.im_class basefunc = getattr(super(cls, cls), method.__name__).im_func setattr(cls, method.__name__, newfunc(basefunc, docstring)) # example of use class B(object): def m(self): "base" return 'ok' class C(B): pass setdocstring(C.m, 'C.m docstring') print B.m.__doc__ # the base docstring print C.m.__doc__ # the new docstring -- http://mail.python.org/mailman/listinfo/python-list