方法重写期间的奇怪继承

2024-09-30 03:23:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发相互继承的不同对象。
有一次我注意到超级方法的代码仍然由继承的方法执行。
从下面列出的子方法可以看出,我注释了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:我正在使用Jython2.7,你可以从标签上看到。你知道吗


Tags: 方法代码selfdataparaminitdefhave
1条回答
网友
1楼 · 发布于 2024-09-30 03:23:36

必须有另一种解释,例如,如果涉及更多的类,并且有另一个类继承自superClass,但不重写superMethod。你知道吗

以下代码(我使用的是Python3)表明一切都应该正常工作:

class Super:
    def __init__(self, listener):
        listener.append(self.superMethod)

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


class Sub(Super):
    def superMethod(self, param):
        print('Only me!')

methods = []
s = Sub(methods)

for method in methods:
    method(None)

输出:

Only me!

相关问题 更多 >

    热门问题