2011-07-29 2 views
0

Pythonプログラムをクラスに設定しようとしています。私はこれを持っている場合しかし:グローバル名「テスト」が定義されていませんPythonでメソッドを有効にする

私は「アクティブ」テストメソッドに行う必要があります:NameErrorを:

class program: def test(value): print value + 1 def functionTest(): a = test(2) if __name__ == "__main__": functionTest() 

私はエラーを取得しますか? ありがとう!

答えて

6
class Program: 
    def test(self, value): 
     print value + 1 

    def functionTest(self): 
     a = self.test(2) 

if __name__ == "__main__": 
    myprog = Program() 
    myprog.functionTest() 
  1. あなたのクラス外のオブジェクト)
  2. あなたは私に電話をしなければなりません上記のすべてのことは、あなたが実際にクラスをしたいし、あなたのコードでそれを使用

オブジェクトをインスタンス化し、メソッドを呼び出すコードは、あなたのクラス(間違った字下げ)にすべきではない、そのオブジェクト

  • にTHOD想定しています。そうでない場合は、@ brandizziの回答をご覧ください

  • 1

    Yoouを使用すると、プログラムのメソッドのパラメータとしての自己を置く必要があります

    myprogram.funtionTest() 
    

    としてあなたの関数を呼び出すことができるように加えて

    myprogram = Program() 
    

    を呼び出す必要があります。

    これは実施例である:あなたはあなたがプログラム(作成をインスタンス化する必要がself.test()

  • testを呼び出す必要があり、引数
  • としてselfを供給する必要が

    class Program(): 
    
        def test(self, value): 
         print value + 1 
    
        def functionTest(self): 
         self.test(2) 
    
    if __name__ == "__main__": 
        myprogram = Program() 
        myprogram.functionTest() 
    
  • 3

    なぜクラス内のすべてをラッピングしていますか?それはjavaではありません。クラスのプログラム行(とすべてのインデント)を削除するだけで動作します。

    4

    あなたがしようとしていることを行うためのクラスは必要ありません。実際には、使用時に意味がありません。

    def test(value): 
        print value + 1 
    
    def functionTest(): 
        test(2) 
    
    if __name__ == "__main__": 
        functionTest() 
    

    クラスは非常に重要で便利ですが、私はあなたがまだPythonを学び始めていると確信しています。だから、クラスを使う前に、関数、コマンドなどを見る時間を取ってください:)(また、the tutorialを読むことを忘れないでください - それは不可欠です

    関連する問題