Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从另一个模块重写方法_Python_Oop_Inheritance_Module - Fatal编程技术网

Python 从另一个模块重写方法

Python 从另一个模块重写方法,python,oop,inheritance,module,Python,Oop,Inheritance,Module,我正在使用并希望覆盖现有方法。但是,我的代码从不调用修改 from jira import JIRA from jira.resources import Issue class Issue(Issue): def update(self): print("overwritten") super(Issue, self).update() # I also tried super().update() jira = JIRA("...") # hol

我正在使用并希望覆盖现有方法。但是,我的代码从不调用修改

from jira import JIRA
from jira.resources import Issue

class Issue(Issue):
    def update(self):
        print("overwritten")
        super(Issue, self).update() # I also tried super().update()

jira = JIRA("...")  # holds a reference to the JIRA instance
issues = jira.search_issues("")  # holds a list of JIRA Issues

for issue in issues:
    // I would expect this call to print "overwritten"
    issue.update()

您可以使用如下包装器对该方法进行monkey修补:

from jira.resources import Issue

def my_update(self):
    print('overwritten')
    original_update(self)

original_update = Issue.update
Issue.update = my_update

为什么您希望使用子类呢?你可以尝试猴子补丁,但那总是一个错误。@juanpa.arrivillaga我试图避免猴子补丁,并希望覆盖现有的
问题。update
方法可以被覆盖,即用自身子类化
问题类(通过
类问题(问题):
)并重新定义现有的
更新()
method…猴子补丁没有错,除非它涉及到复制和粘贴原始代码。作为一个包装器,如我的回答所示,它一点也不危险。