Python functions have a descriptors. I believe that in most cases I shouldn't use this directly but I want to know how works this feature? I tried a couple of manipulations with such an objects:
def a(): return 'x' a.__get__.__doc__ 'descr.__get__(obj[, type]) -> value'
What is the obj and what is the type?
>>> a.__get__() TypeError: expected at least 1 arguments, got 0 >>> a.__get__('s') <bound method ?.a of 's'> >>> a.__get__('s')() TypeError: a() takes no arguments (1 given)
Sure that I can't do this trick with functions which take no arguments. Is it required just only to call functions with arguments?
>>> def d(arg1, arg2, arg3): return arg1, arg2, arg3 >>> d.__get__('s')('x', 'a') ('s', 'x', 'a')
Why the first argument taken directly by
__get__
, and everything else by returned object?
a.__get__(C)
is likeC.a
, notC().a
as in your second example. – Zumstein