PyQt4从另一个类调用Method

时间:2015-01-12 20:29:46

标签: python class oop methods pyqt4

我使用我想要调用的方法获得了A类。

class Class_A(QtGui.QMainWindow):
    def __init__(self, database, tableName):
        QtGui.QWidget.__init__(self)
        self.dbu = database_manager_2.DatabaseUtility(database, tableName)
        self.setupUi(self)

    def setupUi(self, Class_A):
         ...

    def print_somethig (self):
           print 'hello' 

这是B级:

class class B(object):              
    def setupUi_1(self, Dialog):
        ...
        self.my_instance = Class_A()
        QtCore.QObject.connect(self.pushButtonSecond, QtCore.SIGNAL(_fromUtf8("clicked()")),self.my_instance.print_something() )

正如你所看到的,我已经从A类创建了一个实例,所以我可以在B类中调用它的方法。

我收到了这个错误:

  

TypeError:__init__()正好取3个参数(给定1个)

我知道这与OOP有关。

1 个答案:

答案 0 :(得分:1)

这与OOP无关:

您的方法签名是:

def __init__(self, database, tableName):

所以如果你打电话: a = Class_A()你只给出一个参数(self是作为参数隐式给出的)。 没有可以克服它。您可以定义默认值:

def __init__(self, database=None, tableName=None):

所以如果你打电话:

a = Class_A()

database和tableName将为None。但那时:

self.dbu = database_manager_2.DatabaseUtility(database, tableName)
我认为

会抛出错误。

但是使用原始方法签名,没有办法解决这个问题。