Python 调用具有自映射的类函数
当我试图从另一个类调用一个函数时,我会遇到很多错误 我希望代码从不同的类运行函数,就像我在类中执行self.function时一样,因为我不需要来自其他类的变量Python 调用具有自映射的类函数,python,Python,当我试图从另一个类调用一个函数时,我会遇到很多错误 我希望代码从不同的类运行函数,就像我在类中执行self.function时一样,因为我不需要来自其他类的变量 class A(QtWidgets.QMainWindow): def A_a(self): self.A_b() # Bunch of code def A_b(self): self.A_c() # More of code def A_c(se
class A(QtWidgets.QMainWindow):
def A_a(self):
self.A_b()
# Bunch of code
def A_b(self):
self.A_c()
# More of code
def A_c(self):
# Even more code
class B(QtWidgets.QMainWindow):
def B_a(self):
# Call Class A Function A
App.A_a(self)
这就产生了错误AttributeError:“B”对象没有属性“A_A”。在我的例子中,还有其他方法可以从其他类调用类函数吗
编辑:
我已经让它使用以下代码:
class A(QtWidgets.QMainWindow):
def A_a(self):
global SelfVariable
SelfVariable = self
self.A_b()
# Bunch of code
def A_b(self):
self.A_c()
# More of code
def A_c(self):
# Even more code
B类(QtWidgets.QMainWindow):
def B_a(自身):
#调用类A函数A
App.A_A(自变量)我想你想要的是
class B(QtWidgets.QMainWindow):
def B_a(self):
# Call Class A Function A
A.A_a(self) # NOTE THIS WILL GIVE YOU AN ERROR SEE BELOW!
但是它会抱怨,因为A.A\u A
期望一个A
类型的实例作为它的第一个参数,而不是B
。。。您可以使B
成为a
的子类,以便调用a
的方法之一。。。但是你可以只做一下self.A_A
class B(A):
def B_a(self):
# Call Class A Function A
self.A_a()
或者,也可能建议您使用mixin来共享代码
class MyMixin:
def A_c(self):
#some stuff
class A(QtWidgets.QMainWindow, MyMixin):
def A_a(self):
self.A_c()
# More of code
class B(QtWidgets.QMainWindow, MyMixin):
def B_a(self):
self.A_c()
# More of code
甚至只是一个泛型函数
def A_c(someObject):
#doWhateverWithSomeObject()
class A(QtWidgets.QMainWindow):
def A_a(self):
A_c(self)
class B(QtWidgets.QMainWindow):
def B_a(self):
A_c(self)
另一个选择是使A_c成为类A或类B的静态方法或其他任何方法。。。。基本上,底线是无论你想做什么,都有办法去做。。。但是如果没有更多信息,很难说正确的方法是什么这不是有效的Python,
function
在Python中不是关键字。你是说def
?欢迎来到StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。您发布的代码不会产生您引用的错误。是的,对不起,我的错误。为什么您认为类a的方法可以处理类B中的未定义变量?实例方法只能对该类型的实例调用。再次完成课堂教程(或更多)。首先,您好,谢谢您提供的所有信息,让它正常工作。问题是我使用了第二节课的“self”,我已经用工作代码更新了代码。我也为这个问题感到抱歉,因为我还不熟悉编码,并且尝试着自己去做。