2017-07-30 158 views
1

我在學習Python並在同一個目錄下有兩個文件。如何從Python中的另一個文件調用類方法?

printer.py

class Printer(object): 
    def __init__(self): 
     self.message = 'yo' 

    def printMessage(self): 
     print self.message 

if __name__ == "__main__": 
    printer = Printer() 
    printer.printMessage() 

如何調用printMessage(self)方法從另一個文件,example.py在同一個目錄?我認爲this answer很接近,但它顯示瞭如何從同一個文件中的另一個類調用一個類方法。

+0

您是否導入了'printed.py'? – Carcigenicate

+2

在這個問題上的多個downvotes讓我有點生氣。三年前,我還是一名初學者,並且想出了這個問題 - 甚至在SO post之後閱讀SO post後,對我來說是一個極大的挫折。如何使用導入系統是一個很難找到一個試圖自學的初學者。 –

回答

1

你必須將其導入並調用它像這樣:

import printer as pr 

pr.Printer().printMessage() 
+0

這是不正確的。 'printMessage'不是靜態的。你需要創建一個'Printer'類的實例。 –

+0

您正在調用一個沒有參數的類方法。我想你的意思是'pr.Printer()。printMessage()' –

+0

@ChristianK。是的,只是修復它。謝謝 – Gleland

-1

@ Gleland的答案是正確的,但如果你正在考慮使用Printer類的一個單一的共享實例爲整個項目,那麼你需要移動的Printer實例化出來的if條款並導入實例,而不是類,即:

class Printer(object): 
    def __init__(self): 
     self.message = 'yo' 

    def printMessage(self): 
     print self.message 

printer = Printer() 

if __name__ == "__main__": 
    printer.printMessage() 

現在,在其他的文件:

from printer import printer as pr 
pr.printMessage() 
+0

不,你不能調用一個沒有實例參數的未綁定方法。 –

+0

我沒有調用未綁定的方法。請再看一遍。與其他@ gleland的答案唯一的區別是我導入實例,而不是類。 –

+0

@KlausD。你能否修改你的評論並撤消反對票? –

相關問題