web-dev-qa-db-ja.com

Python NameError:名前が定義されていません

pythonスクリプトがあり、次のエラーが表示されます。

Traceback (most recent call last):
  File "C:\Users\Tim\Desktop\pop-erp\test.py", line 1, in <module>  
  s = Something()
  NameError: name 'Something' is not defined

問題を引き起こすコードはここにあります:

s = Something()
s.out()

class Something:
    def out():
        print("it works")

これは、Windows 7 x86-64でPython 3.3.0で実行されています。

なぜSomethingクラスが見つからないのですか?

39
user1899679

使用する前にクラスを定義します。

class Something:
    def out(self):
        print("it works")

s = Something()
s.out()

すべてのインスタンスメソッドの最初の引数としてselfを渡す必要があります。

70
Blender

クラスのインスタンスを作成する前に、クラスを定義する必要があります。 Somethingの呼び出しをスクリプトの最後に移動します。

馬の前にカートを置き、定義される前にプロシージャを呼び出すことができますが、それはいハックであり、ここで定義されているように自分でロールバックする必要があります。

pythonファイル順序に依存しない関数定義を作成

2
user574435