2012-11-29 4 views
1

정교한 파일 교환기 (더 나은 용어가없는)에서 작업 중이며 문제가 발생했습니다. 클래스 푸 시작하면파이썬 : 다른 클래스에서 초기 메서드가 호출 될 때 다른 클래스 메서드를 호출하는 클래스 메서드

class Foo(object): 
    def __init__(self): 
     self.foo = Bar() 
     self.foo.baz() 

class Bar(object): 
    def baz(self): 
     print("baz") 
     self.qux() 
    def qux(self): 
     print("qux") 

, 전화를 걸고 "self.foo.baz()는"아무 것도 전혀 출력에 인쇄되지 않습니다 : 간체, 아래의 코드를 고려하십시오. 어째서? 이 경우 Foo 내에서 Bar 클래스 내의 메서드를 제대로 호출 할 수 있습니까?

+2

나를 위해 잘 작동합니다. '__init__'는 클래스를 인스턴스화 할 때까지 실행되지 않습니다. 클래스를 초기화하지 않고 인스턴스를 초기화합니다. – BrenBarn

+0

재현 할 수 없습니다. 'Foo()'를 호출하면 "baz"와 "qux"가 모두 인쇄됩니다. – perimosocordiae

+1

위의 코드와'Foo()'는'baz'와'qux'를 출력합니다. 거기에 문제 없습니다. –

답변

2

__init__은 인스턴스를 만들 때까지 호출되지 않습니다. 인스턴스를 만드는 경우 :

a = Foo() 

그러면 인쇄 된 것이 보일 것입니다.

+0

인스턴스를 만드는 것을 잊어 버린 것에 대해 조금은 싫어합니다. 헤드 업에 감사드립니다. – Gipphe

관련 문제