2013-10-13 209 views
0

我是python的新手,並且一直在練習類和方法。當我運行包含以下代碼的腳本時,出現錯誤「NameError:全局名稱」nameCheck「未定義。」我該如何解決它?提前致謝。Python「NameError:全局名稱」nameCheck「未定義。」

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() 

蟒「NameError:全球名」 nameCheck「沒有定義」。

+1

我知道你在練習,但在Python中,你通常不會寫一個類這一點,除非你想實際存儲約內的一些遊戲的狀態類。 –

回答

3

由於方法是在一個類中,你需要給那麼自我屬性:

做到這一點:

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

+0

這是現貨!我現在可以舒適地使用類和方法。非常感謝@Christina Careaga! – Gerard

+0

沒問題!它需要一些習慣,但它是非常有用的! – Serial

2

內一類,Python函數被調用的方法,並用這樣的:

class game(object): 

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

    def nameCheck(self): 
     pass 

self包含班級的目標。

+0

感謝您的洞察,@Noctua! – Gerard

相關問題