【发布时间】:2012-06-18 12:34:27
【问题描述】:
假设我有这个类:
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 访问数据库和其他变量。
所以我想我可以这样做。但我对这种实现并不真正有经验。另外,对不起我的英语不好。
【问题讨论】:
-
“这是一个愚蠢的例子,但正是我想要做的” 但是为什么要在超类方法中从子类调用方法呢?这毫无意义……
-
为什么你想这样做?正如你所描述的,你真的不应该这样做。真的真的不应该。请描述您想要达到的目标。几乎可以肯定有一个正确的方法来实现它。
-
我刚刚编辑了问题,以便我的目标变得更加清晰。谢谢。
标签: python class inheritance