假设我有这个类:如何从超类方法调用子类的方法?
class MyClass(object):
def uiFunc(self, MainWindow):
self.attr1 = "foo"
self.attr2 = "bar"
def test():
from subclassfile import MySubClass
MySubClass.firstFunc(self, 2, 2)
test()
而这个子类中的其他文件:
from classfile import MyClass
class MySubclass(MyClass):
def firstFunc(self, a, b):
c = a + b
d = self.secondFunc(self, c)
return d
def secondFunc(self, c):
d = c/2
return d
这是一个愚蠢的例子,但代表正是我试图做的。 我想从第一个函数内的子类中调用第二个函数。 但是,当我这样做时,它返回一个错误,说MyClass没有这样的功能。 所以我想我不应该在函数名称前面使用self
。但是当我不这样做时,它也会产生错误。
所以我的问题是: 如何在子类的第一个函数内部访问第二个函数?
编辑:
谢谢大家的帮助。我会更好地解释我正在尝试做什么,而我认为我的实现在代码中非常糟糕。 MyClass是代码的主要类,其中所有的部件和主要功能都是。 此类上还有一个按钮,它与“测试”功能绑定在一起。所以当按下按钮时,整个事情都应该起作用。 MySubClass文件是将数据导出到某个文件的辅助模块。 firstFunc是这个模块中的主要功能,它处理所有的数据,而secondFunc只是建立文件的模板。所以我在firstFunc中调用了这个secondFunc,以便模板被加载,然后将数据写入文件。 我使这个MySubClass继承自MyClass,以便它可以直接从MyClass访问数据库和其他变量。
所以我想我可以做到这一点。但我对这种实现并不是很有经验。另外,对不起我的英语不好。
“这是一个愚蠢的例子,但代表了我正在尝试做的事情”。但是,为什么要在超类方法中调用子类中的方法?这是毫无意义的...... – brandizzi
*为什么*你想这样做?正如你所描述的那样,你真的不应该这样做。真的*真的*不应该。请描述你想要达到的目标。几乎肯定有一个正确的方法来实现它。 –
我刚刚编辑了这个问题,以便我的目标变得更加清晰。谢谢。 –