#!/usr/bin/env python3 import sys import functools class Base: def sum(self, arg1, arg2): "sum doc" return arg1 + arg2 class Child: def diff(self, arg1, arg2): "diff doc" return arg1 - arg2 Child.sum = functools.partialmethod(Base.sum, 17) def main(): c = Child() print(sys.version_info) print() print("Child.sum and c.sum are different types (no great surprise).") print("type(Child.sum):", type(Child.sum)) print("type(c.sum):", type(c.sum)) print() print("c.sum() and c.diff() work as expected.") print("diff ex (expect 13):", c.diff(17, 4)) print("sum ex (expect 13):", c.sum(-4)) print("Child.diff and c.diff both have the doc strings we expect.") print("Child.diff doc:", Child.diff.__doc__) print("c.diff doc:", c.diff.__doc__) print() if c.sum.__doc__ != Base.sum.__doc__: print("Child.sum & c.sum, not so much...") print("Child.sum doc:", Child.sum.__doc__) print("c.sum doc:", c.sum.__doc__) print() print("Apply ft.diff and note that c.sum.__doc__ improves.") else: print("With the patch, c.sum.__doc__ looks better.") print("Child.sum doc:", Child.sum.__doc__) print("c.sum doc:", c.sum.__doc__) if __name__ == "__main__": main()