方法重写期间的奇怪继承

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

我正在开发彼此继承的不同对象。有一次我注意到,超级方法的代码仍由继承的方法执行。从下面列出的子方法可以看出,我注释了super()以防止执行超类代码。这是超类:

class superClass(superClassOfSuperClass):
    def __init__(self, data):
        #[...]

        #unique call of the superMethod
        self.component.addActionListener(self.superMethod)

        #[...]

    def superMethod(self, param):
        print "I'm executed, but I don't have to be executed!"

这是子方法:

class subClass(superClass):
    def __init__(self, data, newData):
        superClass.__init__(self, data)
        self.newData = newData

        #[...]

    def superMethod(self, param):
        #super(superClass, self).superMethod(None)
        print 'only I have to be printed!!!'

该代码有效。但是我不想看到superMethod打印。有没有一种方法可以阻止superMethod运行,并使subMethod仅执行?因为到目前为止,我可以看到两个打印输出。我希望这是我在OOP上的缺点。

PS:我正在使用Jython 2.7,如您从标签中看到的。

python python-2.7 jython jython-2.7
1个回答
1
投票

例如,如果涉及更多类,并且有另一个类继承自superClass,但不覆盖superMethod,则必须进行另一种解释。

以下代码(我正在使用python 3)显示一切都应该正常工作:

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