当我尝试从不同的类调用函数时,我遇到了一堆错误。
我希望代码从不同的类运行函数,就像我在类中执行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(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(SelfVariable)
答案 0 :(得分:1)
我...猜你想要的是什么
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_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类的静态方法或其他什么......基本上,底线是有办法做任何你想做的事......但很难说没有更多信息的正确方法