Я не очень хорошо знаю python (никогда не использовал его раньше: D), но я не могу найти что-либо в Интернете. Возможно, я просто не ответил на правильный вопрос, но здесь я иду:
Я хочу изменить реализацию экземпляра определенного метода. Когда я искал ее для поиска, я обнаружил, что вы можете это сделать, но она меняет реализацию для всех других экземпляров одного и того же класса, например:
def showyImp(self):
print self.y
class Foo:
def __init__(self):
self.x = "x = 25"
self.y = "y = 4"
def showx(self):
print self.x
def showy(self):
print "y = woohoo"
class Bar:
def __init__(self):
Foo.showy = showyImp
self.foo = Foo()
def show(self):
self.foo.showx()
self.foo.showy()
if __name__ == '__main__':
b = Bar()
b.show()
f = Foo()
f.showx()
f.showy()
Это не работает должным образом, потому что вывод следующий:
x = 25
y = 4
x = 25
y = 4
И я хочу, чтобы это было:
x = 25
y = 4
x = 25
y = woohoo
Я попытался изменить метод Bar init следующим образом:
def __init__(self):
self.foo = Foo()
self.foo.showy = showyImp
Но я получаю следующее сообщение об ошибке:
showyImp() принимает ровно 1 аргумент (задано 0)
Так что да... Я попытался использовать setattr()
, но похоже, что он такой же, как self.foo.showy = showyImp
.
Любая подсказка?:)