如何从类继承来修改Python中的一个方法?

问题描述 投票:0回答:1

我有这个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制作)编程了很长时间,我忘记了这样的事情,可能这个问题是重复的,但我还是没有找到解决方案。

有人可以帮帮我吗?

python python-2.7
1个回答
3
投票

也许这就是你要找的东西:

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()而没有注意到您已经改变了它的行为,那么它将给出意想不到的结果。

编写一个能够完成你想做的事情的子类可能会更好。

© www.soinside.com 2019 - 2024. All rights reserved.