调用具有自己Python的类函数

时间:2018-04-03 20:49:42

标签: 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(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)

1 个答案:

答案 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类的静态方法或其他什么......基本上,底线是有办法做任何你想做的事......但很难说没有更多信息的正确方法