2017-07-30 8 views
1

私はPythonを学び、同じディレクトリに2つのファイルを持っています。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() 

は、どのように私は、同じディレクトリ内の別のファイル、example.pyからprintMessage(self)メソッドを呼び出していますか?私はthis answerが近いと思いましたが、同じファイル内の別のクラスからクラスメソッドを呼び出す方法を示しています。あなたはそれをインポートして、このようにそれを呼び出す必要があり

+0

'print.py'をインポートしましたか? – Carcigenicate

+2

この質問の複数の下落は、私を少し怒らせます。私はちょうど3年以上前の初心者であり、この質問を思い出しました.SOの後のSOの投稿を読んだ後でさえ、私のために大きな不満の源でした。どのようにインポートシステムを使用するかは、自分で学習しようとしている初心者のために理解することは非常に困難です。 –

答えて

1

import printer as pr 

pr.Printer().printMessage() 
+0

これは間違っています。 'printMessage'は静的ではありません。 'Printer'クラスのインスタンスを作成する必要があります。 –

+0

引数なしでクラスメソッドを呼び出しています。私はあなたが 'pr.Printer()。printMessage()'を意味すると思います。 –

+0

@ChristianK。ええ、ちょうどそれを固定しました。ありがとう – Gleland

-1

Glelandの答え@正しいですが、場合には、あなたはあなたがして、プロジェクト全体のためにPrinterクラスの1つの共有インスタンスを使用して考えましたすなわち、クラス、if句のうちのPrinterのインスタンス化を移動して、インスタンスをインポートする必要はありません:今

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の答えとの唯一の違いは、クラスではなくインスタンスをインポートすることです。 @KlausD。 –

+0

あなたのコメントを修正して、否定的な投票を元に戻してください。 –

関連する問題