2016-04-12 7 views
-3

私はプログラミングに新しいです定義されていないと私は答えを見つけることができないため、問題に直面している:のPython 3:NameError:名「functionNameをは」だから、ここにある...

`class MyClass: 
    def printsmth(): 
     print("Hello") 
    def main(): 
     printsmth() 
    if __name__ == '__main__':main()` 

私はというエラーを取得します。コードが含ま

Traceback (most recent call last): 
    File "untitled.py", line 1, in <module> 
    class MyClass: 
    File "untitled.py", line 6, in MyClass 
    if __name__ == '__main__':main() 
    File "untitled.py", line 5, in main 
    printsmth() 
NameError: name 'printsmth' is not defined 

は一例ですが、例えば、私は(メインから私のコードを転送するならば、それは、私が私の実際のコードに乗り、同じエラーである)場合に == 'メイン'は動作しています。間違いなく問題は、コードのいくつかの部分でmain()メソッドを再実行したいのですが、私はこのエラーの解決策を考えることができないため、それにはまだ行きませんでした。

私がメインに移動しようとしたP.S()と ==場合はMyClassから「メイン」と、それは働いていませんでした。

+0

https://docs.python.org/2/tutorial/classes.html#python-scopes-and-namespaces - あなたは(この場合はスコープに)基本的なPythonの概念に精通して取得する必要があります。 –

+2

PythonでJavaを書くように見えます。それが私が 'クラス 'の中の束縛されていない関数について考えることができる唯一の理由です。さらなる明確化のために何千ものPythonチュートリアルに従ってください。 –

答えて

0

selfをメソッドの最初のパラメータとして渡すことを忘れてしまいます。一旦これを行うと、方法としてself.printsmth()を呼び出すことができます。今は、メソッドではなく関数として呼び出すので、混乱します。

class MyClass: 
    def printsmth(self): 
     print("Hello") 
    def main(self): 
     self.printsmth() 
関連する問題