2012-11-29 184 views
1

我正在研究精細的文件切換器(缺少更好的術語),並且遇到問題。簡體,考慮下面的代碼:Python:當從另一個類中調用初始方法時調用其他類方法的類方法

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

當類Foo啓動,並呼籲「self.foo.baz()」,沒有打印輸出任何責任。怎麼來的?在這種情況下,有沒有辦法在Foo中正確調用Bar類中的方法?

+2

它適合我。請注意'__init__'在您實例化類之前不會執行。它不初始化類,它初始化一個實例。 – BrenBarn

+0

我無法複製。當我調用'Foo()'時,打印出「baz」和「qux」。 – perimosocordiae

+1

上面的代碼加上'Foo()'打印'baz'和'qux'。那裏沒有問題。 –

回答

2

__init__在創建實例之前不會被調用。如果你創建一個實例:

a = Foo() 

然後你應該看到打印的東西。

+0

我現在厭倦了自己,忘了創建一個實例...謝謝你的提醒。 – Gipphe

相關問題