Абсолютно, он может быть определен как:
class foo(object):
def __int__(self):
self._y = None
@property
def y(self):
return self._y
@y.setter
def y(self, value):
self._y = value
>>>>x = foo()
>>>>x.y = str
>>>>print type(x.y(12.345)), x.y(12.345)
<type 'str'> 12.345
Здесь, я просто говорю, что атрибут у (да атрибут, а не метод!), устанавливается в значение. Поскольку все является объектом в Python, я могу отлично назначить функцию переменной. Метод, связанный с атрибутом y (там как свойство), возвращает значение атрибута, которое превращается в функцию (str в этом случае). Возвращаемое значение используется как вызываемый, что мы и ожидали. Хотя доступ к атрибуту у возвращается как вызываемым, эффективно называя ул()
Я могу назначить любую fucntion к у так:
def double(x):
return 2 * x
...
>>>>x.y = double
>>>>print x.y(33)
66
И так далее ...
OP не сказал, что 'donothing' был методом' foo'. – Manhattan