我有这个Python代码:
class Parent(object):
def __init__(self):
self.value = 5
def get_value(self):
return self.value
现在我必须修改get_value
方法,我做了这个:
class Child(Parent):
def get_value(self):
return self.value + 1
正如所料,我得到了这个结果:
>>> p = Parent()
>>> p.get_value()
5
>>> c = Child()
>>> c.get_value()
6
但我需要得到这个结果:
>>> p = Parent()
>>> p.get_value()
6
换句话说,我需要在不触及源代码的情况下修改get_value
类的Parent
方法。我已经在Odoo框架(用Python 2.7制作)编程了很长时间,我忘记了这样的事情,可能这个问题是重复的,但我还是没有找到解决方案。
有人可以帮帮我吗?
也许这就是你要找的东西:
class MyClass:
def MyFunc(self):
return 3
def newFunc(self):
return 4
# set the function equal to the new function
MyClass.MyFunc = newFunc
b = MyClass()
# normally would print 3, but prints 4 due to newFunc(self)
print(b.MyFunc())
我不确定你为什么要这样做。如果其他人在您的代码的一部分上工作并且需要访问MyClass.MyFunc()
而没有注意到您已经改变了它的行为,那么它将给出意想不到的结果。
编写一个能够完成你想做的事情的子类可能会更好。