Когда я делаю следующее:
class C:
pass
def f( self ):
print self
a = C()
a.f = f
a.f()
Я получаю следующую ошибку в строке a.f(): TypeError: f() принимает ровно 1 аргумент (задано 0)
Проблема заключается в том, что когда f добавляется в экземпляр, a, он рассматривается как функция, которая хранится внутри a, а не действительная функция-член. Если я изменяю a.f() на a.f(a), тогда я получаю предполагаемый эффект, но есть ли способ сделать python интерпретировать исходный пример таким образом? Другими словами, есть ли способ добавить функцию-член к экземпляру класса во время выполнения?
Спасибо