我使用我想要调用的方法获得了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有关。
答案 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)
我认为会抛出错误。
但是使用原始方法签名,没有办法解决这个问题。