1

私はPythonが初めてで、クラスとメソッドについて練習しています。以下のコードを含むスクリプトを実行すると、「NameError: Global name "nameCheck" is not defined.」というエラーが表示されます。どうすれば修正できますか?前もって感謝します。

class game(object):
    def play(): 
         name = input("What's your name, my friend? ")
         check = nameCheck(name)

         if check == 1:
             print ("Hello %r " %(name))
         else:
             print ("Sorry, I can't print your name because you don't have one!")


    def nameCheck(name):
         if name == "":
             print("I can't believe you have no name!")
             return 0

         else:
             print("%s is a nice name!" %name)
             return 1
game.play()

Python 「NameError: グローバル名「nameCheck」が定義されていません。」</p>

4

2 に答える 2

3

メソッドはクラス内にあるため、self 属性を指定する必要があります。

これを行う:

class game(object):
    def play(self): 
         name = input("What's your name, my friend? ")
         check = self.nameCheck(name)

         if check == 1:
             print ("Hello %r " %(name))
         else:
             print ("Sorry, I can't print your name because you don't have one!")


    def nameCheck(self, name):
         if name == "":
             print("I can't believe you have no name!")
             return 0

         else:
             print("%s is a nice name!" %name)
             return 1
game = Game()
game.play()

これselfはインスタンスのプレースホルダーであるため、これを実行してオブジェクトのインスタンスを作成する必要があり、game = game()そのインスタンスの任意のメソッドを呼び出すことができます

クラスのどこからでもメソッドを呼び出すことができるようになりました。変数に self 属性を指定すると、クラスのどこからでもアクセスできます。

もっと自分で

于 2013-10-13T21:08:02.533 に答える
2

クラス内では、Python 関数はメソッドと呼ばれ、次のように使用されます。

class game(object):

    def play(self):
        self.nameCheck(name)

    def nameCheck(self):
        pass

クラスのselfオブジェクトが含まれています。

于 2013-10-13T21:07:09.103 に答える