假设我有这样的课程:
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()
其他文件中的子类:
^{pr2}$这是一个愚蠢的例子,但恰恰代表了我所要做的。
我想从第一个函数内部的子类调用第二个函数。
但当我这样做时,它会返回一个错误,说明MyClass没有这个函数。
所以我想我不应该在调用函数名之前使用self
。但当我不这样做的时候,它也会引起一个错误。在
所以我的问题是: 第二个子类的第一个函数是如何访问的?在
编辑:
谢谢大家的帮助。我将更好地解释我正在尝试做什么,而我猜我的实现在代码中确实很糟糕。 MyClass是代码的主类,所有的小部件和主函数都在这里。 这个类上还有一个与“test”函数绑定的按钮。所以当按钮被按下的时候,整个事情都会起作用。 MySubClass文件是将数据导出到某个文件的辅助模块。 firstFunc是这个模块中处理所有数据的主要函数,而secondFunc只是构建文件的模板。所以我在firstFunc内部调用这个secondFunc,以便加载模板,然后将数据写入文件。 我让这个MySubClass继承自MyClass,这样它就可以直接从MyClass访问数据库和其他变量。在
所以我想我可以换一种方式。但我对这种实现方式并不是很有经验。还有,对不起我的英语不好。在
更改:
收件人:
^{pr2}$当
firstFunc
是实例方法时,您试图将其当作静态方法调用。您可以使用classmethod
修饰符来实现静态方法效果。在您不是从})。解决方案是重新构造代码,这样就不会发生这种情况。至少,我认为这就是问题所在(当我尝试编写代码时,我遇到了各种导入错误)。下面是我尝试过的代码(我假设它说明了您所描述的问题):
MyClass
的实例调用此方法,而是从MySubclass
的实例调用它。问题是您可能得到了一个TypeError
,因为传递给firstFunc
的参数(self)是错误的类型(MyClass
而不是{请注意,将
test
作为MyClass
的方法并没有实际意义,因为无论如何,您都不能从那里使用它。您也可以将test
移到MySubClass
上。在另外,正如其他人所指出的,
self.secondfunc(self,c)
也是非常奇怪的。这基本上相当于MySubClass.secondfunc(self,self,c)
,它的参数数目错误,因为您要传递self
两次。在这是有效的:
^{pr2}$但我强烈建议重新构造代码。在
相关问题 更多 >
编程相关推荐