Géry <gery.o...@gmail.com> added the comment: @Raymond Hettinger
> The goal in the descriptor how-to is to give an understanding of how > descriptors work. Okay. So I don't know if that was clear in my last message but that also means replacing the current "Function" implementation: class Function(object): . . . def __get__(self, obj, objtype=None): "Simulate func_descr_get() in Objects/funcobject.c" if obj is None: return self return types.MethodType(self, obj) with something like this: class Function(object): . . . def __get__(self, obj, objtype=None): "Simulate func_descr_get() in Objects/funcobject.c" if obj is None: return self def newfunc(*args, **kwargs): return self(obj, *args, **kwargs) return newfunc # "newfunc" emulates "types.MethodType(self, obj)" And as you said, adding a similar comment to the "ClassMethod" implementation (and **kwargs): class ClassMethod(object): "Emulate PyClassMethod_Type() in Objects/funcobject.c" def __init__(self, f): self.f = f def __get__(self, obj, klass=None): if klass is None: klass = type(obj) def newfunc(*args, **kwargs): return self.f(klass, *args, **kwargs) return newfunc # "newfunc" emulates "types.MethodType(self.f, klass)" ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue37203> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com