Я знаю, насколько жестко сообщество SO, поэтому постараюсь сделать все возможное, чтобы вопрос был минимальным, полным и проверяемым.
Я просто хочу знать, можно ли использовать исправление обезьяны для замены определения существующей функции?
Например:
class A():
def foo():
print '2'
def foo():
print '5'
A.foo = foo
Этот способ, похоже, не работает также и в отношении того, почему я просто не добавляю новую функцию вместо замены существующей, я вызываю эти функции в других классах, и я понимаю, что исправление обезьяны добавляет эти функции во время выполнения и мне нужно, чтобы мой код Python запускался на сервере Apache Spark, который выдает ошибку, считая вызовы этой функции безотзывными.
Так что, пожалуйста, будьте любезны и помогите мне или предложите решение. Спасибо.
Изменить: Цель кода - вывести 5 при вызове A.foo.
A.foo = print '5'
, вы пробовалиA.foo = lambda: print('5')
? (Обратите внимание, что с Python 2 вам нужно сделатьfrom __future__ import print_function
) - person tobias_k   schedule 17.03.2017foo
A
, когда вы вызываетеfoo
? - person Sören Titze   schedule 17.03.2017A.foo
напечатать 5 - person Vivek Shankar   schedule 17.03.2017lambda
? - person Vivek Shankar   schedule 17.03.2017