<p>您不是从<code>MyClass</code>的实例调用此方法,而是从<code>MySubclass</code>的实例调用它。问题是您可能得到了一个<code>TypeError</code>,因为传递给<code>firstFunc</code>的参数(self)是错误的类型(<code>MyClass</code>而不是{<cd6>})。解决方案是重新构造代码,这样就不会发生这种情况。至少,我认为这就是问题所在(当我尝试编写代码时,我遇到了各种导入错误)。下面是我尝试过的代码(我假设它说明了您所描述的问题):</p>
<pre><code>class MyClass(object):
def uiFunc(self, MainWindow):
self.attr1 = "foo"
self.attr2 = "bar"
def test(self):
return MySubClass.firstFunc(self, 2, 2)
class MySubClass(MyClass):
def firstFunc(self, a, b):
c = a + b
d = self.secondFunc(c) #removed self from parameter list
return d
def secondFunc(self, c):
d = c / 2
return d
a=MyClass()
b=MySubClass()
print (b.test()) #this works because b is the right type to pass to first/second func
a.test() #This doesn't work because a is the wrong type.
</code></pre>
<p>请注意,将<code>test</code>作为<code>MyClass</code>的方法并没有实际意义,因为无论如何,您都不能</strong>从那里使用它。您也可以将<code>test</code>移到<code>MySubClass</code>上。在</p>
<p>另外,正如其他人所指出的,<code>self.secondfunc(self,c)</code>也是非常奇怪的。这基本上相当于<code>MySubClass.secondfunc(self,self,c)</code>,它的参数数目错误,因为您要传递<code>self</code>两次。在</p>
<p>这是有效的:</p>
^{pr2}$
<p>但我强烈建议重新构造代码。在</p>