2015-01-12 4 views
0

호출 할 메서드로 클래스 A가 있습니다. 당신은 내가 그것을 호출 할 수 있도록 전 클래스 A의 인스턴스를 만든 볼 수 있듯이다른 클래스의 PyQt4 호출 메서드

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()) 

나는이 오류가 발생했습니다

클래스 B의 방법은 다음과 같습니다

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입니다 :

TypeError: __init__() takes exactly 3 arguments (1 given)

나는 이것이 OOP와 관련이 있다는 것을 알고있다.

귀하의 메소드 서명은 다음과 같습니다 : 전화 그렇다면

def __init__(self, database, tableName): 

: OOP와 관련된 아무것도

+0

나는 오류 메시지가 오히려 자명하다 생각합니다. 클래스를 인스턴스화 할 때 self, database 및 tableName과 같은 세 개의 변수로 __init__ 메소드를 제공해야합니다. 파이썬은 첫 번째 코드를 처리합니다. –

+0

네,하지만이 가변적 인 요구를 극복하는 방법이 있어야한다고 생각합니다. 왜냐하면 결국에는 DB 테이블을 제공하고 싶지 않기 때문에 그 클래스 내에있는 메소드를 호출하기를 원합니다. – user3532371

+0

@ user3532371 : 귀하의 질문에 답변했습니다. 이 두 가지 가능성이 있습니다. 하지만 원래 서명으로는 Class_A()를 호출하는 방법이 없습니다. – ProgrammingIsAwsome

답변

1

a = Class_A() 당신은 (자기 암시 적 매개 변수로 주어집니다) 단지 1 개 매개 변수를 제공합니다. 그것을 극복하는 것은 없습니다. 당신이 전화 그렇다면

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

을 :

a = Class_A() 

데이터베이스 및 TABLENAME은 아무도 없을 것입니다 당신은 그런 기본 값을 정의 할 수 있습니다. 하지만 :

self.dbu = database_manager_2.DatabaseUtility(database, tableName) 

이 오류를 발생시키는 것으로 생각됩니다.

그러나 원래 방법 서명을 사용하면 그럴 수 없습니다.

관련 문제